dexbot 1.3.2 → 1.3.3
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/credential-daemon.d.ts.map +1 -1
- package/dist/credential-daemon.js +53 -13
- package/dist/credential-daemon.js.map +1 -1
- package/dist/modules/bitshares-native/serial/types.js +1 -1
- package/dist/modules/bitshares-native/serial/types.js.map +1 -1
- package/dist/modules/chain_keys.js +1 -1
- package/dist/modules/chain_keys.js.map +1 -1
- package/dist/modules/constants.d.ts +2 -0
- package/dist/modules/constants.d.ts.map +1 -1
- package/dist/modules/constants.js +10 -0
- package/dist/modules/constants.js.map +1 -1
- package/dist/modules/credential_policy.js +1 -1
- package/dist/modules/credential_policy.js.map +1 -1
- package/dist/modules/dexbot_class.d.ts +45 -175
- package/dist/modules/dexbot_class.d.ts.map +1 -1
- package/dist/modules/dexbot_class.js +84 -3496
- package/dist/modules/dexbot_class.js.map +1 -1
- package/dist/modules/dexbot_cow_runtime.d.ts +319 -0
- package/dist/modules/dexbot_cow_runtime.d.ts.map +1 -0
- package/dist/modules/dexbot_cow_runtime.js +1764 -0
- package/dist/modules/dexbot_cow_runtime.js.map +1 -0
- package/dist/modules/dexbot_fill_runtime.d.ts +47 -0
- package/dist/modules/dexbot_fill_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_fill_runtime.js +607 -3
- package/dist/modules/dexbot_fill_runtime.js.map +1 -1
- package/dist/modules/dexbot_maintenance_runtime.d.ts +69 -0
- package/dist/modules/dexbot_maintenance_runtime.d.ts.map +1 -1
- package/dist/modules/dexbot_maintenance_runtime.js +244 -15
- package/dist/modules/dexbot_maintenance_runtime.js.map +1 -1
- package/dist/modules/dexbot_startup_runtime.d.ts +30 -0
- package/dist/modules/dexbot_startup_runtime.d.ts.map +1 -0
- package/dist/modules/dexbot_startup_runtime.js +539 -0
- package/dist/modules/dexbot_startup_runtime.js.map +1 -0
- package/dist/modules/dexbot_state_recovery.d.ts +128 -0
- package/dist/modules/dexbot_state_recovery.d.ts.map +1 -0
- package/dist/modules/dexbot_state_recovery.js +397 -0
- package/dist/modules/dexbot_state_recovery.js.map +1 -0
- package/dist/modules/fund_registry.d.ts.map +1 -1
- package/dist/modules/fund_registry.js +0 -1
- package/dist/modules/fund_registry.js.map +1 -1
- package/dist/modules/general_settings.d.ts.map +1 -1
- package/dist/modules/general_settings.js +0 -1
- package/dist/modules/general_settings.js.map +1 -1
- package/dist/modules/key_store.d.ts.map +1 -1
- package/dist/modules/key_store.js +1 -2
- package/dist/modules/key_store.js.map +1 -1
- package/dist/modules/launcher/market_adapter_runtime.d.ts.map +1 -1
- package/dist/modules/launcher/market_adapter_runtime.js +0 -1
- package/dist/modules/launcher/market_adapter_runtime.js.map +1 -1
- package/dist/modules/launcher/market_adapter_watchdog.d.ts.map +1 -1
- package/dist/modules/launcher/market_adapter_watchdog.js +1 -2
- package/dist/modules/launcher/market_adapter_watchdog.js.map +1 -1
- package/dist/modules/order/grid_reconcile.d.ts.map +1 -1
- package/dist/modules/order/grid_reconcile.js +0 -1
- package/dist/modules/order/grid_reconcile.js.map +1 -1
- package/dist/modules/order/grid_reconcile_internal.js +2 -2
- package/dist/modules/order/grid_reconcile_internal.js.map +1 -1
- package/dist/modules/order/utils/math.js +1 -1
- package/dist/modules/order/utils/math.js.map +1 -1
- package/dist/modules/order/utils/system.js +1 -1
- package/dist/modules/order/utils/system.js.map +1 -1
- package/dist/modules/order/utils/validate.d.ts.map +1 -1
- package/dist/modules/order/utils/validate.js +0 -1
- package/dist/modules/order/utils/validate.js.map +1 -1
- package/dist/modules/paths.d.ts +2 -0
- package/dist/modules/paths.d.ts.map +1 -1
- package/dist/modules/paths.js +13 -2
- package/dist/modules/paths.js.map +1 -1
- package/dist/scripts/verify-browser-bundle.js +25 -1
- package/dist/scripts/verify-browser-bundle.js.map +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persist the current grid state and trigger recovery if validation fails.
|
|
3
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
4
|
+
*/
|
|
5
|
+
declare function persistAndRecoverIfNeeded(bot: any): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Snapshot the recently queued fill keys as a plain object for crash-durable persistence.
|
|
8
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
9
|
+
* @returns {Record<string, number>}
|
|
10
|
+
*/
|
|
11
|
+
declare function getRecentFillKeysSnapshot(bot: any): {};
|
|
12
|
+
/**
|
|
13
|
+
* Trigger a full state recovery sync (fetch chain + sync from open orders + persist).
|
|
14
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
15
|
+
* @param {string} [reason='state recovery sync']
|
|
16
|
+
*/
|
|
17
|
+
declare function triggerStateRecoverySync(bot: any, reason?: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Abort the current flow if an illegal state signal was raised.
|
|
20
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
21
|
+
* @param {string} flowContext
|
|
22
|
+
* @returns {Promise<boolean>}
|
|
23
|
+
*/
|
|
24
|
+
declare function abortFlowIfIllegalState(bot: any, flowContext: any): Promise<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* Handle a hard abort from batch processing due to illegal state or accounting failure.
|
|
27
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
28
|
+
* @param {Error} err
|
|
29
|
+
* @param {string} [phase='batch processing']
|
|
30
|
+
* @param {number} [opsCount=0]
|
|
31
|
+
* @returns {Promise<Object|null>}
|
|
32
|
+
*/
|
|
33
|
+
declare function handleBatchHardAbort(bot: any, err: any, phase?: string, opsCount?: number): Promise<{
|
|
34
|
+
abortedForIllegalState: boolean;
|
|
35
|
+
executed: boolean;
|
|
36
|
+
hadRotation: boolean;
|
|
37
|
+
} | {
|
|
38
|
+
abortedForAccountingFailure: boolean;
|
|
39
|
+
executed: boolean;
|
|
40
|
+
hadRotation: boolean;
|
|
41
|
+
}>;
|
|
42
|
+
/**
|
|
43
|
+
* Apply recoverable grid updates (order virtualisation) after a batch failure.
|
|
44
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
45
|
+
* @param {Array<Object>} updates
|
|
46
|
+
* @param {string} [context='recoverable-grid-update']
|
|
47
|
+
* @returns {Promise<number>}
|
|
48
|
+
*/
|
|
49
|
+
declare function applyRecoverableGridUpdates(bot: any, updates: any, context?: string): Promise<any>;
|
|
50
|
+
/**
|
|
51
|
+
* Recover from explicit stale order errors by virtualizing affected grid slots.
|
|
52
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
53
|
+
* @param {Set<string>|string[]} staleOrderIds
|
|
54
|
+
* @param {string} [reason='stale order cleanup']
|
|
55
|
+
* @returns {Promise<Object>}
|
|
56
|
+
*/
|
|
57
|
+
declare function recoverExplicitStaleOrders(bot: any, staleOrderIds: any, reason?: string): Promise<{
|
|
58
|
+
executed: boolean;
|
|
59
|
+
hadRotation: boolean;
|
|
60
|
+
stale: boolean;
|
|
61
|
+
recoveredByVirtualization?: undefined;
|
|
62
|
+
} | {
|
|
63
|
+
executed: boolean;
|
|
64
|
+
hadRotation: boolean;
|
|
65
|
+
stale: boolean;
|
|
66
|
+
recoveredByVirtualization: boolean;
|
|
67
|
+
}>;
|
|
68
|
+
/**
|
|
69
|
+
* Recover from on-chain size drift detected during batch broadcast.
|
|
70
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
71
|
+
* @param {Error} err
|
|
72
|
+
* @param {Array<Object>} [opContexts=[]]
|
|
73
|
+
* @returns {Promise<Object>}
|
|
74
|
+
*/
|
|
75
|
+
declare function recoverBatchSizeDrift(bot: any, err: any, opContexts?: any[]): Promise<{
|
|
76
|
+
executed: boolean;
|
|
77
|
+
hadRotation: boolean;
|
|
78
|
+
recoveredBySync: boolean;
|
|
79
|
+
reason: string;
|
|
80
|
+
}>;
|
|
81
|
+
/**
|
|
82
|
+
* Extract chain order IDs from opContexts for size-drift operations.
|
|
83
|
+
* @param {Array<Object>} opContexts
|
|
84
|
+
* @returns {string[]}
|
|
85
|
+
*/
|
|
86
|
+
declare function extractSizeDriftOrderIds(opContexts: any): unknown[];
|
|
87
|
+
/**
|
|
88
|
+
* Reload the grid from the persisted on-disk snapshot and reconcile with chain.
|
|
89
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
90
|
+
* @returns {Promise<{success: boolean, reason?: string}>}
|
|
91
|
+
*/
|
|
92
|
+
declare function recoverFromPersistedGrid(bot: any): Promise<{
|
|
93
|
+
success: boolean;
|
|
94
|
+
reason?: undefined;
|
|
95
|
+
} | {
|
|
96
|
+
success: boolean;
|
|
97
|
+
reason: any;
|
|
98
|
+
}>;
|
|
99
|
+
/**
|
|
100
|
+
* Reject a corrupted grid snapshot when catastrophic fund drift is detected.
|
|
101
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
102
|
+
* @param {'startup'|'recovery'} context
|
|
103
|
+
* @returns {Promise<boolean>}
|
|
104
|
+
*/
|
|
105
|
+
declare function rejectCorruptedGridSnapshot(bot: any, context: any): Promise<boolean>;
|
|
106
|
+
/**
|
|
107
|
+
* Attempt to repair size-drift for specific order IDs from chain state.
|
|
108
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
109
|
+
* @param {string[]} orderIds
|
|
110
|
+
* @returns {Promise<boolean>}
|
|
111
|
+
*/
|
|
112
|
+
declare function targetedOrderRepair(bot: any, orderIds: any): Promise<boolean>;
|
|
113
|
+
declare const _default: {
|
|
114
|
+
persistAndRecoverIfNeeded: typeof persistAndRecoverIfNeeded;
|
|
115
|
+
getRecentFillKeysSnapshot: typeof getRecentFillKeysSnapshot;
|
|
116
|
+
triggerStateRecoverySync: typeof triggerStateRecoverySync;
|
|
117
|
+
abortFlowIfIllegalState: typeof abortFlowIfIllegalState;
|
|
118
|
+
handleBatchHardAbort: typeof handleBatchHardAbort;
|
|
119
|
+
applyRecoverableGridUpdates: typeof applyRecoverableGridUpdates;
|
|
120
|
+
recoverExplicitStaleOrders: typeof recoverExplicitStaleOrders;
|
|
121
|
+
recoverBatchSizeDrift: typeof recoverBatchSizeDrift;
|
|
122
|
+
extractSizeDriftOrderIds: typeof extractSizeDriftOrderIds;
|
|
123
|
+
recoverFromPersistedGrid: typeof recoverFromPersistedGrid;
|
|
124
|
+
rejectCorruptedGridSnapshot: typeof rejectCorruptedGridSnapshot;
|
|
125
|
+
targetedOrderRepair: typeof targetedOrderRepair;
|
|
126
|
+
};
|
|
127
|
+
export = _default;
|
|
128
|
+
//# sourceMappingURL=dexbot_state_recovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dexbot_state_recovery.d.ts","sourceRoot":"","sources":["../../modules/dexbot_state_recovery.ts"],"names":[],"mappings":"AAWA;;;GAGG;AACH,iBAAe,yBAAyB,CAAC,GAAG,KAAA,iBAc3C;AAED;;;;GAIG;AACH,iBAAS,yBAAyB,CAAC,GAAG,KAAA,MAgBrC;AAED;;;;GAIG;AACH,iBAAe,wBAAwB,CAAC,GAAG,KAAA,EAAE,MAAM,SAAwB,iBAoB1E;AAED;;;;;GAKG;AACH,iBAAe,uBAAuB,CAAC,GAAG,KAAA,EAAE,WAAW,KAAA,oBAatD;AAED;;;;;;;GAOG;AACH,iBAAe,oBAAoB,CAAC,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,KAAK,SAAqB,EAAE,QAAQ,SAAI;;;;;;;;GAsBrF;AAED;;;;;;GAMG;AACH,iBAAe,2BAA2B,CAAC,GAAG,KAAA,EAAE,OAAO,KAAA,EAAE,OAAO,SAA4B,gBAuB3F;AAED;;;;;;GAMG;AACH,iBAAe,0BAA0B,CAAC,GAAG,KAAA,EAAE,aAAa,KAAA,EAAE,MAAM,SAAwB;;;;;;;;;;GAwC3F;AAED;;;;;;GAMG;AACH,iBAAe,qBAAqB,CAAC,GAAG,KAAA,EAAE,GAAG,KAAA,EAAE,UAAU,QAAK;;;;;GAkC7D;AAED;;;;GAIG;AACH,iBAAS,wBAAwB,CAAC,UAAU,KAAA,aAW3C;AAED;;;;GAIG;AACH,iBAAe,wBAAwB,CAAC,GAAG,KAAA;;;;;;GAmF1C;AAED;;;;;GAKG;AACH,iBAAe,2BAA2B,CAAC,GAAG,KAAA,EAAE,OAAO,KAAA,oBAoBtD;AAED;;;;;GAKG;AACH,iBAAe,mBAAmB,CAAC,GAAG,KAAA,EAAE,QAAQ,KAAA,oBA2C/C;;;;;;;;;;;;;;;AAED,kBAaE"}
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/** State recovery runtime - grid persistence, recovery sync, size-drift repair */
|
|
3
|
+
const { BitShares } = require('./bitshares_client');
|
|
4
|
+
const chainOrders = require('./chain_orders');
|
|
5
|
+
function virtualizeOrder(...args) { return require('./order/utils/order').virtualizeOrder(...args); }
|
|
6
|
+
function parseChainOrder(...args) { return require('./order/utils/order').parseChainOrder(...args); }
|
|
7
|
+
function blockchainToFloat(...args) { return require('./order/utils/math').blockchainToFloat(...args); }
|
|
8
|
+
const { ORDER_TYPES } = require('./constants');
|
|
9
|
+
const Format = require('./order/format');
|
|
10
|
+
const grid = require('./order/grid');
|
|
11
|
+
const { isGridBloated } = grid;
|
|
12
|
+
/**
|
|
13
|
+
* Persist the current grid state and trigger recovery if validation fails.
|
|
14
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
15
|
+
*/
|
|
16
|
+
async function persistAndRecoverIfNeeded(bot) {
|
|
17
|
+
bot.manager._recentFillKeysSnapshot = bot._getRecentFillKeysSnapshot();
|
|
18
|
+
const validation = await bot.manager.persistGrid();
|
|
19
|
+
if (!validation.isValid) {
|
|
20
|
+
bot._warn(`Startup validation failed: ${validation.reason}. Triggering immediate recovery...`);
|
|
21
|
+
const recoveryValidation = await bot.manager.accountant._performStateRecovery(bot.manager);
|
|
22
|
+
if (recoveryValidation.isValid) {
|
|
23
|
+
bot._log(`✓ Startup recovery successful. Persistent state restored.`);
|
|
24
|
+
bot.manager._recentFillKeysSnapshot = bot._getRecentFillKeysSnapshot();
|
|
25
|
+
await bot.manager.persistGrid();
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
bot._warn(`Startup recovery failed: ${recoveryValidation.reason}. Bot proceeding with caution.`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Snapshot the recently queued fill keys as a plain object for crash-durable persistence.
|
|
34
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
35
|
+
* @returns {Record<string, number>}
|
|
36
|
+
*/
|
|
37
|
+
function getRecentFillKeysSnapshot(bot) {
|
|
38
|
+
const snapshot = {};
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
for (const [key, timestamp] of bot._recentlyQueuedFills) {
|
|
41
|
+
if (now - Number(timestamp) < bot._fillDedupeWindowMs) {
|
|
42
|
+
snapshot[key] = Number(timestamp);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (bot.manager?._recentFillKeysSnapshot) {
|
|
46
|
+
for (const [key, timestamp] of Object.entries(bot.manager._recentFillKeysSnapshot)) {
|
|
47
|
+
if (!(key in snapshot) && now - Number(timestamp) < bot._fillDedupeWindowMs) {
|
|
48
|
+
snapshot[key] = Number(timestamp);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return snapshot;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Trigger a full state recovery sync (fetch chain + sync from open orders + persist).
|
|
56
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
57
|
+
* @param {string} [reason='state recovery sync']
|
|
58
|
+
*/
|
|
59
|
+
async function triggerStateRecoverySync(bot, reason = 'state recovery sync') {
|
|
60
|
+
if (!bot.manager)
|
|
61
|
+
return;
|
|
62
|
+
if (bot._recoverySyncInFlight) {
|
|
63
|
+
bot.manager.logger.log(`[RECOVERY] Skipping duplicate recovery request: ${reason}`, 'warn');
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
bot._recoverySyncInFlight = true;
|
|
67
|
+
try {
|
|
68
|
+
bot.manager.logger.log(`Triggering state recovery sync (${reason})...`, 'info');
|
|
69
|
+
await bot.manager.fetchAccountTotals(bot.accountId);
|
|
70
|
+
const openOrders = await chainOrders.readOpenOrders(bot.accountId);
|
|
71
|
+
await bot.manager.syncFromOpenOrders(openOrders, { skipAccounting: true });
|
|
72
|
+
if (typeof bot.manager.persistGrid === 'function') {
|
|
73
|
+
await bot.manager.persistGrid();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
bot._recoverySyncInFlight = false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Abort the current flow if an illegal state signal was raised.
|
|
82
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
83
|
+
* @param {string} flowContext
|
|
84
|
+
* @returns {Promise<boolean>}
|
|
85
|
+
*/
|
|
86
|
+
async function abortFlowIfIllegalState(bot, flowContext) {
|
|
87
|
+
const illegalSignal = bot.manager?.consumeIllegalStateSignal?.();
|
|
88
|
+
if (!illegalSignal) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
bot.manager.logger.log(`[HARD-ABORT] ${flowContext} aborted due to illegal state (${illegalSignal.context}): ${illegalSignal.message}`, 'error');
|
|
92
|
+
await bot._triggerStateRecoverySync(`hard-abort ${flowContext}`);
|
|
93
|
+
bot._maintenanceCooldownCycles = Math.max(bot._maintenanceCooldownCycles, 1);
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Handle a hard abort from batch processing due to illegal state or accounting failure.
|
|
98
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
99
|
+
* @param {Error} err
|
|
100
|
+
* @param {string} [phase='batch processing']
|
|
101
|
+
* @param {number} [opsCount=0]
|
|
102
|
+
* @returns {Promise<Object|null>}
|
|
103
|
+
*/
|
|
104
|
+
async function handleBatchHardAbort(bot, err, phase = 'batch processing', opsCount = 0) {
|
|
105
|
+
const baseResult = { executed: false, hadRotation: false };
|
|
106
|
+
const opsInfo = opsCount > 0 ? ` with ${opsCount} ops` : '';
|
|
107
|
+
if (err?.code === 'ILLEGAL_ORDER_STATE') {
|
|
108
|
+
const illegalSignal = bot.manager.consumeIllegalStateSignal?.();
|
|
109
|
+
await bot._triggerStateRecoverySync(illegalSignal?.message || `illegal order state during ${phase}${opsInfo}`);
|
|
110
|
+
bot._maintenanceCooldownCycles = Math.max(bot._maintenanceCooldownCycles, 1);
|
|
111
|
+
return { ...baseResult, abortedForIllegalState: true };
|
|
112
|
+
}
|
|
113
|
+
if (err?.code === 'ACCOUNTING_COMMITMENT_FAILED') {
|
|
114
|
+
const accountingSignal = bot.manager.consumeAccountingFailureSignal?.();
|
|
115
|
+
const reason = accountingSignal
|
|
116
|
+
? `accounting lock failure (${accountingSignal.side} ${Format.formatAmount8(accountingSignal.amount)}) during ${accountingSignal.context}`
|
|
117
|
+
: `accounting commitment lock failure during ${phase}${opsInfo}`;
|
|
118
|
+
await bot._triggerStateRecoverySync(reason);
|
|
119
|
+
bot._maintenanceCooldownCycles = Math.max(bot._maintenanceCooldownCycles, 1);
|
|
120
|
+
return { ...baseResult, abortedForAccountingFailure: true };
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Apply recoverable grid updates (order virtualisation) after a batch failure.
|
|
126
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
127
|
+
* @param {Array<Object>} updates
|
|
128
|
+
* @param {string} [context='recoverable-grid-update']
|
|
129
|
+
* @returns {Promise<number>}
|
|
130
|
+
*/
|
|
131
|
+
async function applyRecoverableGridUpdates(bot, updates, context = 'recoverable-grid-update') {
|
|
132
|
+
if (!bot.manager || !Array.isArray(updates) || updates.length === 0) {
|
|
133
|
+
return 0;
|
|
134
|
+
}
|
|
135
|
+
let applied;
|
|
136
|
+
if (typeof bot.manager.applyGridUpdateBatch === 'function') {
|
|
137
|
+
await bot.manager.applyGridUpdateBatch(updates, context);
|
|
138
|
+
applied = updates.length;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
applied = 0;
|
|
142
|
+
for (const update of updates) {
|
|
143
|
+
if (typeof bot.manager._updateOrder !== 'function')
|
|
144
|
+
break;
|
|
145
|
+
await bot.manager._updateOrder(update, context);
|
|
146
|
+
applied++;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (applied > 0 && typeof bot.manager.persistGrid === 'function') {
|
|
150
|
+
await bot.manager.persistGrid();
|
|
151
|
+
}
|
|
152
|
+
return applied;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Recover from explicit stale order errors by virtualizing affected grid slots.
|
|
156
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
157
|
+
* @param {Set<string>|string[]} staleOrderIds
|
|
158
|
+
* @param {string} [reason='stale order cleanup']
|
|
159
|
+
* @returns {Promise<Object>}
|
|
160
|
+
*/
|
|
161
|
+
async function recoverExplicitStaleOrders(bot, staleOrderIds, reason = 'stale order cleanup') {
|
|
162
|
+
const staleIds = Array.from(staleOrderIds || []).filter(Boolean);
|
|
163
|
+
if (staleIds.length === 0) {
|
|
164
|
+
return { executed: false, hadRotation: false, stale: false };
|
|
165
|
+
}
|
|
166
|
+
bot.manager.logger.log(`[COW] Stale order(s) detected: ${staleIds.join(', ')}. Applying targeted cleanup.`, 'warn');
|
|
167
|
+
const updates = [];
|
|
168
|
+
for (const [, gridOrder] of bot.manager.orders.entries()) {
|
|
169
|
+
if (!gridOrder?.orderId || !staleOrderIds.has(gridOrder.orderId))
|
|
170
|
+
continue;
|
|
171
|
+
bot._staleCleanedOrderIds.set(gridOrder.orderId, Date.now());
|
|
172
|
+
updates.push({ ...virtualizeOrder(gridOrder), size: 0 });
|
|
173
|
+
}
|
|
174
|
+
for (const orderId of staleIds) {
|
|
175
|
+
if (!bot._staleCleanedOrderIds.has(orderId)) {
|
|
176
|
+
bot._staleCleanedOrderIds.set(orderId, Date.now());
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
if (updates.length > 0) {
|
|
180
|
+
await bot._applyRecoverableGridUpdates(updates, reason);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
bot.manager.logger.log(`[COW] No local grid slot matched stale order cleanup request (${staleIds.join(', ')}).`, 'debug');
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
executed: false,
|
|
187
|
+
hadRotation: false,
|
|
188
|
+
stale: true,
|
|
189
|
+
recoveredByVirtualization: updates.length > 0
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Recover from on-chain size drift detected during batch broadcast.
|
|
194
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
195
|
+
* @param {Error} err
|
|
196
|
+
* @param {Array<Object>} [opContexts=[]]
|
|
197
|
+
* @returns {Promise<Object>}
|
|
198
|
+
*/
|
|
199
|
+
async function recoverBatchSizeDrift(bot, err, opContexts = []) {
|
|
200
|
+
const affectedOrderIds = extractSizeDriftOrderIds(opContexts);
|
|
201
|
+
if (affectedOrderIds.length > 0) {
|
|
202
|
+
bot.manager.logger.log(`[COW] Targeted size-drift repair for ${affectedOrderIds.length} order(s): ${affectedOrderIds.join(', ')}`, 'debug');
|
|
203
|
+
const repaired = await bot._targetedOrderRepair(affectedOrderIds);
|
|
204
|
+
if (repaired) {
|
|
205
|
+
return {
|
|
206
|
+
executed: false,
|
|
207
|
+
hadRotation: false,
|
|
208
|
+
recoveredBySync: true,
|
|
209
|
+
reason: 'ORDER_SIZE_DRIFT_TARGETED'
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
bot.manager.logger.log('[COW] Targeted repair failed, falling back to full state recovery sync.', 'warn');
|
|
213
|
+
}
|
|
214
|
+
const reason = `recoverable size drift during COW batch: ${err.message}`;
|
|
215
|
+
bot.manager.logger.log(`[COW] Recovering from on-chain size drift via recovery sync: ${err.message}`, 'warn');
|
|
216
|
+
await bot._triggerStateRecoverySync(reason);
|
|
217
|
+
return {
|
|
218
|
+
executed: false,
|
|
219
|
+
hadRotation: false,
|
|
220
|
+
recoveredBySync: true,
|
|
221
|
+
reason: 'ORDER_SIZE_DRIFT'
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Extract chain order IDs from opContexts for size-drift operations.
|
|
226
|
+
* @param {Array<Object>} opContexts
|
|
227
|
+
* @returns {string[]}
|
|
228
|
+
*/
|
|
229
|
+
function extractSizeDriftOrderIds(opContexts) {
|
|
230
|
+
if (!Array.isArray(opContexts))
|
|
231
|
+
return [];
|
|
232
|
+
const ids = new Set();
|
|
233
|
+
for (const ctx of opContexts) {
|
|
234
|
+
if (ctx?.kind === 'size-update' && ctx?.updateInfo?.partialOrder?.orderId) {
|
|
235
|
+
ids.add(ctx.updateInfo.partialOrder.orderId);
|
|
236
|
+
}
|
|
237
|
+
else if (ctx?.kind === 'rotation' && ctx?.rotation?.oldOrder?.orderId) {
|
|
238
|
+
ids.add(ctx.rotation.oldOrder.orderId);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return Array.from(ids);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Reload the grid from the persisted on-disk snapshot and reconcile with chain.
|
|
245
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
246
|
+
* @returns {Promise<{success: boolean, reason?: string}>}
|
|
247
|
+
*/
|
|
248
|
+
async function recoverFromPersistedGrid(bot) {
|
|
249
|
+
if (!bot.accountOrders || !bot.manager) {
|
|
250
|
+
return { success: false, reason: 'accountOrders or manager unavailable' };
|
|
251
|
+
}
|
|
252
|
+
const accountRef = bot.accountId || bot.account?.id || bot.account;
|
|
253
|
+
if (!accountRef) {
|
|
254
|
+
return { success: false, reason: 'no account reference' };
|
|
255
|
+
}
|
|
256
|
+
bot.manager.logger.log('[RECOVERY] Attempting full grid reload from persisted snapshot...', 'warn');
|
|
257
|
+
try {
|
|
258
|
+
const persistedGrid = bot.accountOrders.loadGrid(true);
|
|
259
|
+
if (!persistedGrid || persistedGrid.length === 0) {
|
|
260
|
+
return { success: false, reason: 'no persisted grid on disk' };
|
|
261
|
+
}
|
|
262
|
+
const boundaryIdx = bot.accountOrders.loadBoundaryIdx(true);
|
|
263
|
+
await grid.loadGrid(bot.manager, persistedGrid, boundaryIdx);
|
|
264
|
+
if (await bot._rejectCorruptedGridSnapshot('recovery')) {
|
|
265
|
+
return { success: false, reason: 'corrupted grid snapshot rejected (fund drift)' };
|
|
266
|
+
}
|
|
267
|
+
const chainOpenOrders = await chainOrders.readOpenOrders(accountRef);
|
|
268
|
+
if (chainOpenOrders.length > 0 && bot.manager?.syncFromOpenOrders) {
|
|
269
|
+
await bot.manager.syncFromOpenOrders(chainOpenOrders, {
|
|
270
|
+
skipAccounting: true,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
if (typeof bot.manager.persistGrid === 'function') {
|
|
274
|
+
await bot.manager.persistGrid();
|
|
275
|
+
}
|
|
276
|
+
const assets = bot.manager?.assets;
|
|
277
|
+
const matchedCount = assets
|
|
278
|
+
? chainOpenOrders.filter(o => parseChainOrder(o, assets) !== null).length
|
|
279
|
+
: chainOpenOrders.length;
|
|
280
|
+
bot.manager.logger.log(`[RECOVERY] Grid reloaded from persisted snapshot: ${bot.manager.orders.size} orders, ` +
|
|
281
|
+
`${matchedCount} on-chain orders synced`, 'info');
|
|
282
|
+
const remainingUnmatched = Array.isArray(bot.manager?._lastUnmatchedChainOrders)
|
|
283
|
+
? bot.manager._lastUnmatchedChainOrders
|
|
284
|
+
: [];
|
|
285
|
+
if (remainingUnmatched.length > 0) {
|
|
286
|
+
const sample = remainingUnmatched.slice(0, 3)
|
|
287
|
+
.map(o => bot._formatUnmatchedChainOrderForLog(o))
|
|
288
|
+
.join(' | ');
|
|
289
|
+
bot.manager.logger.log(`[RECOVERY] Persisted grid reloaded but ${remainingUnmatched.length} unmatched chain order(s) ` +
|
|
290
|
+
`remain${sample ? ` (${sample})` : ''}. Rejecting — full grid reset required.`, 'warn');
|
|
291
|
+
return { success: false, reason: `grid inconsistent after reload: ${remainingUnmatched.length} unmatched remain` };
|
|
292
|
+
}
|
|
293
|
+
const ordersArr = Array.from(bot.manager.orders.values());
|
|
294
|
+
const bloatPostRecovery = isGridBloated(bot.manager, ordersArr);
|
|
295
|
+
if (bloatPostRecovery.bloated) {
|
|
296
|
+
const d = bloatPostRecovery.details;
|
|
297
|
+
bot.manager.logger.log(`[RECOVERY] Persisted grid reloaded but still bloated ` +
|
|
298
|
+
`(${d.gridSize} slots, max ${d.maxAllowed}). Rejecting — full grid reset required.`, 'warn');
|
|
299
|
+
return { success: false, reason: 'grid still bloated after reload' };
|
|
300
|
+
}
|
|
301
|
+
return { success: true };
|
|
302
|
+
}
|
|
303
|
+
catch (err) {
|
|
304
|
+
bot.manager.logger.log(`[RECOVERY] Full grid reload from persisted snapshot failed: ${err.message}`, 'error');
|
|
305
|
+
return { success: false, reason: err.message };
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Reject a corrupted grid snapshot when catastrophic fund drift is detected.
|
|
310
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
311
|
+
* @param {'startup'|'recovery'} context
|
|
312
|
+
* @returns {Promise<boolean>}
|
|
313
|
+
*/
|
|
314
|
+
async function rejectCorruptedGridSnapshot(bot, context) {
|
|
315
|
+
if (!bot.manager?.checkFundDriftAfterFills)
|
|
316
|
+
return false;
|
|
317
|
+
const driftCheck = bot.manager.checkFundDriftAfterFills();
|
|
318
|
+
if (driftCheck.isValid)
|
|
319
|
+
return false;
|
|
320
|
+
const tag = context === 'recovery' ? '[RECOVERY][SNAPSHOT-REJECT]' : '[SNAPSHOT-REJECT]';
|
|
321
|
+
bot._warn(`${tag} Corrupted grid snapshot detected: ` +
|
|
322
|
+
`drift sell=${driftCheck.driftSell.toFixed(2)} buy=${driftCheck.driftBuy.toFixed(2)}. ` +
|
|
323
|
+
`Deleting corrupted snapshot.`);
|
|
324
|
+
if (bot.accountOrders && typeof bot.accountOrders.clearGrid === 'function') {
|
|
325
|
+
try {
|
|
326
|
+
await bot.accountOrders.clearGrid();
|
|
327
|
+
bot._warn(`${tag} Corrupted grid snapshot deleted.`);
|
|
328
|
+
}
|
|
329
|
+
catch (clearErr) {
|
|
330
|
+
bot._warn(`${tag} Failed to delete corrupted snapshot: ${clearErr.message}`);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return true;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Attempt to repair size-drift for specific order IDs from chain state.
|
|
337
|
+
* @param {import('./dexbot_class').DEXBot} bot
|
|
338
|
+
* @param {string[]} orderIds
|
|
339
|
+
* @returns {Promise<boolean>}
|
|
340
|
+
*/
|
|
341
|
+
async function targetedOrderRepair(bot, orderIds) {
|
|
342
|
+
try {
|
|
343
|
+
const objects = await BitShares.db.get_objects(orderIds);
|
|
344
|
+
if (!Array.isArray(objects) || objects.length !== orderIds.length)
|
|
345
|
+
return false;
|
|
346
|
+
const updates = [];
|
|
347
|
+
for (let i = 0; i < orderIds.length; i++) {
|
|
348
|
+
const chainOrder = objects[i];
|
|
349
|
+
const gridOrder = Array.from(bot.manager.orders.values())
|
|
350
|
+
.find((o) => o.orderId === orderIds[i]);
|
|
351
|
+
if (!gridOrder)
|
|
352
|
+
continue;
|
|
353
|
+
if (!chainOrder || typeof chainOrder.for_sale === 'undefined') {
|
|
354
|
+
updates.push({ ...virtualizeOrder(gridOrder), size: 0 });
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
const chainUnits = Number(chainOrder.for_sale);
|
|
358
|
+
if (Number.isFinite(chainUnits)) {
|
|
359
|
+
const prec = gridOrder.type === ORDER_TYPES.SELL
|
|
360
|
+
? bot.manager.assets.assetA.precision
|
|
361
|
+
: bot.manager.assets.assetB.precision;
|
|
362
|
+
const floatSize = blockchainToFloat(chainUnits, prec);
|
|
363
|
+
if (floatSize !== gridOrder.size) {
|
|
364
|
+
updates.push({
|
|
365
|
+
id: gridOrder.id,
|
|
366
|
+
size: floatSize,
|
|
367
|
+
rawOnChain: chainOrder,
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
if (updates.length > 0) {
|
|
374
|
+
await bot._applyRecoverableGridUpdates(updates, 'targeted-size-drift-repair');
|
|
375
|
+
}
|
|
376
|
+
return true;
|
|
377
|
+
}
|
|
378
|
+
catch (err) {
|
|
379
|
+
bot.manager.logger.log(`[COW] Targeted order repair failed: ${err.message}`, 'debug');
|
|
380
|
+
return false;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
module.exports = {
|
|
384
|
+
persistAndRecoverIfNeeded,
|
|
385
|
+
getRecentFillKeysSnapshot,
|
|
386
|
+
triggerStateRecoverySync,
|
|
387
|
+
abortFlowIfIllegalState,
|
|
388
|
+
handleBatchHardAbort,
|
|
389
|
+
applyRecoverableGridUpdates,
|
|
390
|
+
recoverExplicitStaleOrders,
|
|
391
|
+
recoverBatchSizeDrift,
|
|
392
|
+
extractSizeDriftOrderIds,
|
|
393
|
+
recoverFromPersistedGrid,
|
|
394
|
+
rejectCorruptedGridSnapshot,
|
|
395
|
+
targetedOrderRepair,
|
|
396
|
+
};
|
|
397
|
+
//# sourceMappingURL=dexbot_state_recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dexbot_state_recovery.js","sourceRoot":"","sources":["../../modules/dexbot_state_recovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fund_registry.d.ts","sourceRoot":"","sources":["../../modules/fund_registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fund_registry.d.ts","sourceRoot":"","sources":["../../modules/fund_registry.ts"],"names":[],"mappings":"AAsDA;;;;;;;GAOG;AACH,iBAAe,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAexH;AAED;;;;;;;GAOG;AACH,iBAAe,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBvI;AAED;;;;;;;;;;;GAWG;AACH,iBAAS,oCAAoC,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ5I;AAED;;;;;;;;;;;GAWG;AACH,iBAAS,0BAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ7H;AAED;;;;;GAKG;AACH,iBAAS,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAK3E;AAED;;;;;;GAMG;AACH,iBAAS,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAOlG;AAED;;;;;GAKG;AACH,iBAAe,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhF;AAED;;;;GAIG;AACH,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAKpD;AAED;;;;GAIG;AACH,iBAAS,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;GAEG;AACH,iBAAS,aAAa,IAAI,IAAI,CAG7B;;;;;;;;;;;;;AAED,kBAWE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fund_registry.js","sourceRoot":"","sources":["../../modules/fund_registry.ts"],"names":[],"mappings":";AAAA,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"fund_registry.js","sourceRoot":"","sources":["../../modules/fund_registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general_settings.d.ts","sourceRoot":"","sources":["../../modules/general_settings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"general_settings.d.ts","sourceRoot":"","sources":["../../modules/general_settings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;;;;;;;GAQG;AACH,iBAAS,mBAAmB,CAAC,EAAE,QAAe,EAAE,OAAc,EAAE,GAAE;IAAE,QAAQ,CAAC,EAAE,GAAG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAA;CAAO,GAAG,GAAG,CAezJ;AAED;;;;;;;GAOG;AACH,iBAAS,oBAAoB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,CAKjD;;;;;;;AAED,kBAKE"}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* Centralized management for application-wide settings stored in profiles/general.settings.json.
|
|
6
6
|
* Provides read/write operations with fallback handling.
|
|
7
7
|
*/
|
|
8
|
-
const { path } = require('./path_api');
|
|
9
8
|
const { getStorage } = require('./storage');
|
|
10
9
|
const storage = getStorage();
|
|
11
10
|
const { PATHS } = require('./paths');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general_settings.js","sourceRoot":"","sources":["../../modules/general_settings.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"general_settings.js","sourceRoot":"","sources":["../../modules/general_settings.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;AAEH,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAC5C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;AAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,MAAM,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAE5D,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;AACxC,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,qBAAqB,CAAC;AAE3D;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI,KAAoF,EAAE;IAChJ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,QAAQ,CAAC;IAEpD,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;YAAE,OAAO,QAAQ,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAChB,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,mBAAmB,aAAa,KAAK,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAAC,QAAa;IACvC,sEAAsE;IACtE,oEAAoE;IACpE,iDAAiD;IACjD,mBAAmB,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,iBAAS;IACL,YAAY;IACZ,aAAa;IACb,mBAAmB;IACnB,oBAAoB;CACvB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key_store.d.ts","sourceRoot":"","sources":["../../modules/key_store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"key_store.d.ts","sourceRoot":"","sources":["../../modules/key_store.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,QAAQ;IACrB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3F,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IACtC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC1I;AAED,qBAAa,cAAe,YAAW,QAAQ;IACrC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBhG,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO;IAI/B,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CA2EnJ;AAED,qBAAa,cAAe,YAAW,QAAQ;IACrC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAQhG,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO;IAEhC,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC;CAgB3G;AAID,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAEvD;AAED,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAKtC"}
|
|
@@ -8,8 +8,7 @@ const chainKeys = require('./chain_keys');
|
|
|
8
8
|
const credentialPolicy = require('./credential_policy');
|
|
9
9
|
const credentialRuntime = require('./credential_runtime');
|
|
10
10
|
const { executeOperationsViaCredentialDaemon, BroadcastUncertainError, } = require('./dexbot_credential_client');
|
|
11
|
-
const {
|
|
12
|
-
const { path } = require('./path_api');
|
|
11
|
+
const { DAEMON_ERRORS } = require('./constants');
|
|
13
12
|
const { PATHS } = require('./paths');
|
|
14
13
|
const { getStorage } = require('./storage');
|
|
15
14
|
const storage = getStorage();
|