@verana-labs/vs-agent-sdk 1.12.0-dev.3 → 1.12.0-dev.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +35 -27
  2. package/build/agent/VsAgent.d.ts +16 -0
  3. package/build/agent/VsAgent.js +78 -14
  4. package/build/agent/VsAgent.js.map +1 -1
  5. package/build/agent/createVsAgent.d.ts +3 -0
  6. package/build/agent/createVsAgent.js +2 -0
  7. package/build/agent/createVsAgent.js.map +1 -1
  8. package/build/auth/adr036.d.ts +7 -0
  9. package/build/auth/adr036.js +22 -0
  10. package/build/auth/adr036.js.map +1 -0
  11. package/build/auth/index.d.ts +1 -0
  12. package/build/auth/index.js +18 -0
  13. package/build/auth/index.js.map +1 -0
  14. package/build/blockchain/AuthorizationService.d.ts +30 -0
  15. package/build/blockchain/AuthorizationService.js +100 -0
  16. package/build/blockchain/AuthorizationService.js.map +1 -0
  17. package/build/blockchain/IndexerWebSocketService.d.ts +15 -9
  18. package/build/blockchain/IndexerWebSocketService.js +201 -97
  19. package/build/blockchain/IndexerWebSocketService.js.map +1 -1
  20. package/build/blockchain/VeranaChainService.d.ts +29 -3
  21. package/build/blockchain/VeranaChainService.js +164 -27
  22. package/build/blockchain/VeranaChainService.js.map +1 -1
  23. package/build/blockchain/VeranaHelpers.js +1 -0
  24. package/build/blockchain/VeranaHelpers.js.map +1 -1
  25. package/build/blockchain/VeranaIndexerService.d.ts +13 -2
  26. package/build/blockchain/VeranaIndexerService.js +49 -6
  27. package/build/blockchain/VeranaIndexerService.js.map +1 -1
  28. package/build/blockchain/handlers/IndexerHandlerRegistry.d.ts +4 -3
  29. package/build/blockchain/handlers/IndexerHandlerRegistry.js +6 -0
  30. package/build/blockchain/handlers/IndexerHandlerRegistry.js.map +1 -1
  31. package/build/blockchain/handlers/authorizationHandlers.d.ts +4 -0
  32. package/build/blockchain/handlers/authorizationHandlers.js +54 -0
  33. package/build/blockchain/handlers/authorizationHandlers.js.map +1 -0
  34. package/build/blockchain/handlers/defaultHandlers.d.ts +4 -1
  35. package/build/blockchain/handlers/defaultHandlers.js +62 -35
  36. package/build/blockchain/handlers/defaultHandlers.js.map +1 -1
  37. package/build/blockchain/handlers/index.d.ts +1 -0
  38. package/build/blockchain/handlers/index.js +1 -0
  39. package/build/blockchain/handlers/index.js.map +1 -1
  40. package/build/blockchain/handlers/stateMutations.d.ts +6 -1
  41. package/build/blockchain/handlers/stateMutations.js +146 -10
  42. package/build/blockchain/handlers/stateMutations.js.map +1 -1
  43. package/build/blockchain/index.d.ts +1 -0
  44. package/build/blockchain/index.js +1 -0
  45. package/build/blockchain/index.js.map +1 -1
  46. package/build/blockchain/indexerSync.d.ts +10 -0
  47. package/build/blockchain/indexerSync.js +34 -0
  48. package/build/blockchain/indexerSync.js.map +1 -0
  49. package/build/blockchain/types.d.ts +123 -11
  50. package/build/blockchain/types.js +20 -1
  51. package/build/blockchain/types.js.map +1 -1
  52. package/build/bootstrap/EcsBootstrapService.d.ts +30 -0
  53. package/build/bootstrap/EcsBootstrapService.js +300 -0
  54. package/build/bootstrap/EcsBootstrapService.js.map +1 -0
  55. package/build/bootstrap/index.d.ts +1 -0
  56. package/build/bootstrap/index.js +18 -0
  57. package/build/bootstrap/index.js.map +1 -0
  58. package/build/credentials/FullTailsFileService.d.ts +4 -4
  59. package/build/credentials/FullTailsFileService.js +76 -65
  60. package/build/credentials/FullTailsFileService.js.map +1 -1
  61. package/build/did/adminApiService.d.ts +2 -0
  62. package/build/did/adminApiService.js +17 -0
  63. package/build/did/adminApiService.js.map +1 -0
  64. package/build/did/migrateWebVhVersionTime.d.ts +9 -0
  65. package/build/did/migrateWebVhVersionTime.js +191 -0
  66. package/build/did/migrateWebVhVersionTime.js.map +1 -0
  67. package/build/events/VsAgentEvents.d.ts +16 -2
  68. package/build/events/VsAgentEvents.js +2 -0
  69. package/build/events/VsAgentEvents.js.map +1 -1
  70. package/build/events/VtFlowEvents.d.ts +3 -0
  71. package/build/events/VtFlowEvents.js +35 -0
  72. package/build/events/VtFlowEvents.js.map +1 -0
  73. package/build/events/index.d.ts +1 -0
  74. package/build/events/index.js +1 -0
  75. package/build/events/index.js.map +1 -1
  76. package/build/index.d.ts +4 -1
  77. package/build/index.js +9 -4
  78. package/build/index.js.map +1 -1
  79. package/build/plugins/setupBaseDidComm.js +1 -1
  80. package/build/plugins/setupBaseDidComm.js.map +1 -1
  81. package/build/types.d.ts +4 -0
  82. package/build/types.js +5 -1
  83. package/build/types.js.map +1 -1
  84. package/build/utils/trustCredentialStore.d.ts +2 -0
  85. package/build/utils/trustCredentialStore.js +49 -2
  86. package/build/utils/trustCredentialStore.js.map +1 -1
  87. package/build/utils/util.d.ts +5 -1
  88. package/build/utils/util.js +17 -5
  89. package/build/utils/util.js.map +1 -1
  90. package/build/vtFlow/VtFlowOrchestrator.d.ts +16 -1
  91. package/build/vtFlow/VtFlowOrchestrator.js +215 -87
  92. package/build/vtFlow/VtFlowOrchestrator.js.map +1 -1
  93. package/build/vtFlow/assertVerifiableService.d.ts +8 -0
  94. package/build/vtFlow/assertVerifiableService.js +28 -0
  95. package/build/vtFlow/assertVerifiableService.js.map +1 -0
  96. package/build/vtFlow/index.d.ts +1 -0
  97. package/build/vtFlow/index.js +1 -0
  98. package/build/vtFlow/index.js.map +1 -1
  99. package/package.json +15 -11
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthorizationService = void 0;
4
+ // A lapsed grant that carries a period is still valid: the chain rolls the expiration
5
+ // forward on the next check (VPR spec AUTHZ-CHECK-3 step 4, AUTHZ-CHECK-1 step 2).
6
+ function renews(period) {
7
+ var _a;
8
+ return period != null && (period.seconds > 0 || ((_a = period.nanos) !== null && _a !== void 0 ? _a : 0) > 0);
9
+ }
10
+ function isOperatorAuthorizationActive(expiration, period) {
11
+ return expiration === undefined || expiration.getTime() > Date.now() || renews(period);
12
+ }
13
+ function isVsoaRecordActive(expiration, period) {
14
+ return expiration != null && (expiration.getTime() > Date.now() || renews(period));
15
+ }
16
+ /** VS operator authorization records cached for the admin API (https://github.com/verana-labs/vs-agent/issues/472); operator authorizations are queried on demand. */
17
+ class AuthorizationService {
18
+ constructor(config) {
19
+ var _a;
20
+ this.vsoaByParticipant = new Map();
21
+ this.lastRefreshAt = 0;
22
+ this.chain = config.chain;
23
+ this.logger = config.logger;
24
+ this.corporationId = config.corporationId;
25
+ this.minRefreshIntervalMs = (_a = config.minRefreshIntervalMs) !== null && _a !== void 0 ? _a : 2000;
26
+ }
27
+ inScope(corporationId) {
28
+ return this.corporationId === undefined || corporationId === this.corporationId;
29
+ }
30
+ async refreshForOperator() {
31
+ // Catch-up replays hit the same current chain state, so back-to-back refreshes are skipped.
32
+ if (Date.now() - this.lastRefreshAt < this.minRefreshIntervalMs)
33
+ return;
34
+ const vsoas = await this.chain.listVsOperatorAuthorizations();
35
+ this.lastRefreshAt = Date.now();
36
+ const rebuilt = new Map();
37
+ for (const vsoa of vsoas) {
38
+ if (!this.inScope(vsoa.corporationId))
39
+ continue;
40
+ for (const record of vsoa.records) {
41
+ rebuilt.set(record.participantId, Object.assign(Object.assign({}, record), { corporationId: vsoa.corporationId, vsOperator: vsoa.vsOperator }));
42
+ }
43
+ }
44
+ this.vsoaByParticipant = rebuilt;
45
+ this.logger.debug(`[Authorization] cache refreshed: ${rebuilt.size} VSOA record(s)`);
46
+ }
47
+ invalidateParticipant(participantId) {
48
+ if (this.vsoaByParticipant.delete(participantId)) {
49
+ this.logger.debug(`[Authorization] invalidated VSOA record for participant ${participantId}`);
50
+ }
51
+ }
52
+ canSign(participantId, msgType) {
53
+ const record = this.vsoaByParticipant.get(participantId);
54
+ return (!!record && record.msgTypes.includes(msgType) && isVsoaRecordActive(record.expiration, record.period));
55
+ }
56
+ getVsOperatorAuthorizationRecord(participantId) {
57
+ return this.vsoaByParticipant.get(participantId);
58
+ }
59
+ listVsOperatorAuthorizationRecords() {
60
+ return [...this.vsoaByParticipant.values()];
61
+ }
62
+ // The feegrant mirror requires a strictly future expiration and is not renewed by the
63
+ // lazy cycle (MOD-DE-MSG-5-5), so no period leniency here.
64
+ hasFeegrant(participantId) {
65
+ const record = this.vsoaByParticipant.get(participantId);
66
+ return (!!record && record.withFeegrant && record.expiration != null && record.expiration.getTime() > Date.now());
67
+ }
68
+ async agentHoldsOperatorGrant(msgType) {
69
+ return this.callerHoldsOperatorGrant(this.chain.address, msgType);
70
+ }
71
+ // A blank account must fail closed: the chain treats an empty filter as "any account".
72
+ async callerHoldsOperatorGrant(account, msgType) {
73
+ if (!account.trim())
74
+ return false;
75
+ const auths = await this.chain.listOperatorAuthorizations(account);
76
+ return auths.some(a => this.inScope(a.corporationId) &&
77
+ a.msgTypes.includes(msgType) &&
78
+ isOperatorAuthorizationActive(a.expiration, a.period));
79
+ }
80
+ async callerHoldsAnyVsOperatorGrant(account, msgType) {
81
+ if (!account.trim())
82
+ return false;
83
+ const vsoas = await this.chain.listVsOperatorAuthorizations(account);
84
+ return vsoas.some(vsoa => this.inScope(vsoa.corporationId) &&
85
+ vsoa.records.some(r => this.vsoaByParticipant.has(r.participantId) &&
86
+ r.msgTypes.includes(msgType) &&
87
+ isVsoaRecordActive(r.expiration, r.period)));
88
+ }
89
+ async callerHoldsVsOperatorGrant(account, participantId, msgType) {
90
+ if (!account.trim())
91
+ return false;
92
+ const vsoas = await this.chain.listVsOperatorAuthorizations(account);
93
+ return vsoas.some(vsoa => this.inScope(vsoa.corporationId) &&
94
+ vsoa.records.some(r => r.participantId === participantId &&
95
+ r.msgTypes.includes(msgType) &&
96
+ isVsoaRecordActive(r.expiration, r.period)));
97
+ }
98
+ }
99
+ exports.AuthorizationService = AuthorizationService;
100
+ //# sourceMappingURL=AuthorizationService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthorizationService.js","sourceRoot":"","sources":["../../src/blockchain/AuthorizationService.ts"],"names":[],"mappings":"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"}
@@ -4,32 +4,38 @@ export interface IndexerWebSocketServiceOptions {
4
4
  indexerUrl: string;
5
5
  agent: VsAgent;
6
6
  handlerRegistry?: IndexerHandlerRegistry;
7
+ corporationId?: number;
7
8
  }
8
9
  export declare class IndexerWebSocketService {
9
10
  private readonly options;
10
11
  private ws;
11
12
  private reconnectAttempt;
13
+ private reconnectTimer;
14
+ private watchdog;
12
15
  private stopped;
13
16
  private syncing;
14
- private IndexerEventRecords;
17
+ private generation;
18
+ private chain;
19
+ private syncBuffer;
15
20
  private readonly indexer;
16
21
  private readonly handlerRegistry;
17
22
  constructor(options: IndexerWebSocketServiceOptions);
18
23
  start(): Promise<void>;
19
24
  stop(): void;
20
25
  private get logger();
21
- /**
22
- * Connects to the indexer WebSocket, performs an initial sync via REST (use /events endpoint because it returns historical events in a single request)
23
- * Finally, processes pending events received during the initial sync.
24
- */
25
26
  private connect;
26
27
  private openWebSocket;
28
+ private handleMessage;
27
29
  private syncRest;
28
- private drainIndexerEventRecords;
29
- private processBlock;
30
+ private drainSyncBuffer;
31
+ private enqueueLive;
32
+ private runExclusive;
33
+ private applyEvent;
34
+ private applyChanges;
30
35
  private fetchActivity;
31
36
  private fetchEntity;
32
- private applyChanges;
37
+ private armWatchdog;
38
+ private clearWatchdog;
39
+ private forceReconnect;
33
40
  private scheduleReconnect;
34
- private fetchInitialEvents;
35
41
  }
@@ -4,21 +4,32 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.IndexerWebSocketService = void 0;
7
+ const vs_agent_model_1 = require("@verana-labs/vs-agent-model");
7
8
  const ws_1 = __importDefault(require("ws"));
9
+ const events_1 = require("../events");
8
10
  const VeranaHelpers_1 = require("./VeranaHelpers");
9
11
  const VeranaIndexerService_1 = require("./VeranaIndexerService");
10
12
  const handlers_1 = require("./handlers");
13
+ const indexerSync_1 = require("./indexerSync");
11
14
  const MAX_RECONNECT_DELAY_MS = 300000;
12
15
  const WS_PATHNAME = 'v4/indexer/subscribe';
16
+ const REST_PAGE_LIMIT = 500;
17
+ const MAX_SYNC_BUFFER = 10000;
18
+ // The indexer pings every 30 seconds, so a longer gap means the socket is dead.
19
+ const LIVENESS_TIMEOUT_MS = 90000;
13
20
  class IndexerWebSocketService {
14
21
  constructor(options) {
15
22
  var _a;
16
23
  this.options = options;
17
24
  this.ws = null;
18
25
  this.reconnectAttempt = 0;
26
+ this.reconnectTimer = null;
27
+ this.watchdog = null;
19
28
  this.stopped = false;
20
29
  this.syncing = false;
21
- this.IndexerEventRecords = [];
30
+ this.generation = 0;
31
+ this.chain = Promise.resolve();
32
+ this.syncBuffer = [];
22
33
  this.indexer = new VeranaIndexerService_1.VeranaIndexerService({
23
34
  baseUrl: options.indexerUrl,
24
35
  logger: options.agent.config.logger,
@@ -32,23 +43,37 @@ class IndexerWebSocketService {
32
43
  stop() {
33
44
  var _a;
34
45
  this.stopped = true;
46
+ this.clearWatchdog();
47
+ if (this.reconnectTimer) {
48
+ clearTimeout(this.reconnectTimer);
49
+ this.reconnectTimer = null;
50
+ }
35
51
  (_a = this.ws) === null || _a === void 0 ? void 0 : _a.close();
36
52
  this.ws = null;
37
53
  }
38
54
  get logger() {
39
55
  return this.options.agent.config.logger;
40
56
  }
41
- /**
42
- * Connects to the indexer WebSocket, performs an initial sync via REST (use /events endpoint because it returns historical events in a single request)
43
- * Finally, processes pending events received during the initial sync.
44
- */
45
57
  async connect() {
58
+ if (this.stopped)
59
+ return;
60
+ const generation = ++this.generation;
46
61
  this.syncing = true;
47
- this.IndexerEventRecords = [];
62
+ this.syncBuffer = [];
48
63
  this.openWebSocket();
49
- await this.syncRest();
64
+ try {
65
+ await this.syncRest(generation);
66
+ }
67
+ catch (error) {
68
+ this.logger.error(`[IndexerWS] Catch-up failed, will reconnect: ${error.message}`);
69
+ if (generation === this.generation)
70
+ this.forceReconnect('catch-up failed');
71
+ return;
72
+ }
73
+ if (this.stopped || generation !== this.generation)
74
+ return;
50
75
  this.syncing = false;
51
- await this.drainIndexerEventRecords();
76
+ this.drainSyncBuffer(generation);
52
77
  }
53
78
  openWebSocket() {
54
79
  const url = new URL(this.options.indexerUrl);
@@ -59,44 +84,25 @@ class IndexerWebSocketService {
59
84
  this.logger.info(`[IndexerWS] Connecting to ${wsUrl}`);
60
85
  const ws = new ws_1.default(wsUrl);
61
86
  this.ws = ws;
87
+ this.armWatchdog();
62
88
  ws.on('open', () => {
63
- this.logger.info(`[IndexerWS] Connected to indexer`);
64
- this.reconnectAttempt = 0;
89
+ if (ws === this.ws)
90
+ this.logger.info(`[IndexerWS] Connected to indexer`);
91
+ });
92
+ ws.on('ping', () => {
93
+ if (ws === this.ws)
94
+ this.armWatchdog();
65
95
  });
66
96
  ws.on('message', (data) => {
67
- var _a;
68
- try {
69
- const message = JSON.parse(data.toString());
70
- if (message.type === 'ready') {
71
- const subscribe = {
72
- action: 'subscribe',
73
- dids: this.options.agent.did ? [this.options.agent.did] : undefined,
74
- };
75
- ws.send(JSON.stringify(subscribe));
76
- return;
77
- }
78
- if (message.type !== 'block')
79
- return;
80
- for (const event of message.events) {
81
- if (event.type !== 'indexer-event')
82
- continue;
83
- if (event.block_height <= 0)
84
- continue;
85
- if (!((_a = event.payload) === null || _a === void 0 ? void 0 : _a.sender))
86
- continue;
87
- if (this.syncing) {
88
- this.IndexerEventRecords.push(event);
89
- }
90
- else {
91
- this.processBlock(event).catch(err => this.logger.error(`[IndexerWS] Handler error: ${err.message}`));
92
- }
93
- }
94
- }
95
- catch (_b) {
96
- this.logger.warn(`[IndexerWS] Failed to parse message: ${data}`);
97
- }
97
+ if (ws !== this.ws)
98
+ return;
99
+ this.armWatchdog();
100
+ this.handleMessage(ws, data);
98
101
  });
99
102
  ws.on('close', () => {
103
+ if (ws !== this.ws)
104
+ return;
105
+ this.clearWatchdog();
100
106
  if (!this.stopped)
101
107
  this.scheduleReconnect();
102
108
  });
@@ -104,55 +110,147 @@ class IndexerWebSocketService {
104
110
  this.logger.error(`[IndexerWS] Error: ${error.message}`);
105
111
  });
106
112
  }
107
- async syncRest() {
108
- this.logger.info(`[IndexerWS] Starting REST initial sync`);
113
+ handleMessage(ws, data) {
114
+ let message;
109
115
  try {
110
- const { lastBlockHeight } = await (0, VeranaHelpers_1.loadSyncState)(this.options.agent);
111
- const data = await this.fetchInitialEvents(lastBlockHeight);
112
- for (const event of data.events) {
113
- await this.processBlock(event);
114
- }
115
- this.logger.info(`[IndexerWS] Initial sync complete: ${data.events.length} event(s)`);
116
+ message = JSON.parse(data.toString());
116
117
  }
117
- catch (error) {
118
- this.logger.error(`[IndexerWS] REST initial sync failed: ${error.message}`);
118
+ catch (_a) {
119
+ this.logger.warn(`[IndexerWS] Failed to parse message: ${data}`);
120
+ return;
121
+ }
122
+ if (message.type === 'ready') {
123
+ this.reconnectAttempt = 0;
124
+ const subscribe = this.options.corporationId != null
125
+ ? { action: 'subscribe', corporationId: this.options.corporationId }
126
+ : { action: 'subscribe', dids: this.options.agent.did ? [this.options.agent.did] : undefined };
127
+ ws.send(JSON.stringify(subscribe));
128
+ return;
129
+ }
130
+ if (message.type !== 'block')
131
+ return;
132
+ const generation = this.generation;
133
+ for (const event of message.events) {
134
+ if (!(0, indexerSync_1.isProcessableEvent)(event))
135
+ continue;
136
+ if (!this.syncing) {
137
+ this.enqueueLive(event, generation);
138
+ }
139
+ else if (this.syncBuffer.length < MAX_SYNC_BUFFER) {
140
+ this.syncBuffer.push(event);
141
+ }
142
+ else {
143
+ this.forceReconnect('sync buffer overflow');
144
+ return;
145
+ }
119
146
  }
120
147
  }
121
- async drainIndexerEventRecords() {
148
+ async syncRest(generation) {
149
+ if (!this.options.agent.did)
150
+ throw new Error('Agent does not have any defined public DID');
151
+ const did = this.options.agent.did;
122
152
  const { lastBlockHeight } = await (0, VeranaHelpers_1.loadSyncState)(this.options.agent);
123
- const events = this.IndexerEventRecords.splice(0);
124
- let processed = 0;
125
- let skipped = 0;
126
- for (const event of events) {
127
- if (event.block_height <= lastBlockHeight) {
128
- skipped++;
129
- continue;
153
+ let cursor = lastBlockHeight;
154
+ for (;;) {
155
+ if (this.stopped || generation !== this.generation)
156
+ return;
157
+ const page = await this.indexer.getEvents(did, cursor, REST_PAGE_LIMIT, this.options.corporationId);
158
+ for (const event of (0, indexerSync_1.sortEventsByPosition)(page.events.filter(indexerSync_1.isProcessableEvent))) {
159
+ if (this.stopped || generation !== this.generation)
160
+ return;
161
+ await this.runExclusive(() => this.applyEvent(event, generation));
162
+ }
163
+ const next = (0, indexerSync_1.nextRestCursor)(page.events, cursor, REST_PAGE_LIMIT);
164
+ if (next.done)
165
+ return;
166
+ if (next.blockExceedsPage) {
167
+ this.logger.warn(`[IndexerWS] Block ${next.cursor} fills a full page; the events API cannot page within a block`);
130
168
  }
131
- await this.processBlock(event);
132
- processed++;
169
+ cursor = next.cursor;
170
+ }
171
+ }
172
+ drainSyncBuffer(generation) {
173
+ const events = this.syncBuffer.splice(0);
174
+ for (const event of (0, indexerSync_1.sortEventsByPosition)(events)) {
175
+ this.enqueueLive(event, generation);
176
+ }
177
+ }
178
+ enqueueLive(event, generation) {
179
+ this.runExclusive(() => this.applyEvent(event, generation)).catch(error => {
180
+ this.logger.error(`[IndexerWS] Live event ${event.event_type} failed at block ${event.block_height}: ${error.message}`);
181
+ if (generation === this.generation)
182
+ this.forceReconnect('live event processing failed');
183
+ });
184
+ }
185
+ runExclusive(task) {
186
+ const result = this.chain.then(task);
187
+ this.chain = result.then(() => undefined, () => undefined);
188
+ return result;
189
+ }
190
+ async applyEvent(event, generation) {
191
+ var _a;
192
+ if (this.stopped || generation !== this.generation)
193
+ return;
194
+ const key = (0, indexerSync_1.eventKey)(event);
195
+ const block = event.block_height;
196
+ const state = await (0, VeranaHelpers_1.loadSyncState)(this.options.agent);
197
+ if (block <= state.lastBlockHeight)
198
+ return;
199
+ const partialKeys = (_a = state.partialKeys) !== null && _a !== void 0 ? _a : [];
200
+ if (block === state.partialBlock && partialKeys.includes(key))
201
+ return;
202
+ const activity = await this.fetchActivity(event);
203
+ if (this.stopped || generation !== this.generation)
204
+ return;
205
+ if (activity)
206
+ await this.applyChanges(event, activity, state);
207
+ if (state.partialBlock === undefined || block > state.partialBlock) {
208
+ state.partialBlock = block;
209
+ state.partialKeys = [key];
133
210
  }
134
- if (skipped + processed > 0) {
135
- this.logger.info(`[IndexerWS] Drained: ${processed} processed, ${skipped} skipped`);
211
+ else {
212
+ state.partialKeys = [...partialKeys, key];
136
213
  }
214
+ // A block counts as done only when a later block arrives, so the saved height stays one behind.
215
+ state.lastBlockHeight = Math.max(state.lastBlockHeight, block - 1);
216
+ await (0, VeranaHelpers_1.saveSyncState)(this.options.agent, state);
137
217
  }
138
- async processBlock(event) {
218
+ async applyChanges(event, activity, state) {
219
+ const syncState = state !== null && state !== void 0 ? state : (await (0, VeranaHelpers_1.loadSyncState)(this.options.agent));
220
+ const block = event.block_height;
221
+ (0, handlers_1.applyStateMutation)(syncState, activity);
222
+ await this.handlerRegistry.dispatch(activity, {
223
+ agent: this.options.agent,
224
+ blockHeight: block,
225
+ operatorAddress: event.payload.sender,
226
+ state: syncState,
227
+ txHash: event.tx_hash,
228
+ });
229
+ if (!state) {
230
+ syncState.lastBlockHeight = Math.max(syncState.lastBlockHeight, block);
231
+ await (0, VeranaHelpers_1.saveSyncState)(this.options.agent, syncState);
232
+ }
139
233
  try {
140
- const activity = await this.fetchActivity(event);
141
- if (activity) {
142
- await this.applyChanges(event, activity);
143
- }
234
+ (0, events_1.emitVsAgentEvent)(this.options.agent, events_1.VsAgentEventTypes.IndexerNotification, new vs_agent_model_1.IndexerNotification({
235
+ msg: activity.msg,
236
+ entityType: String(activity.entity_type),
237
+ entityId: String(activity.entity_id),
238
+ changes: activity.changes,
239
+ blockHeight: block,
240
+ txHash: event.tx_hash,
241
+ operatorAddress: event.payload.sender,
242
+ timestamp: new Date(event.timestamp),
243
+ }));
144
244
  }
145
- catch (error) {
146
- this.logger.error(`[IndexerWS] Failed to process event ${event.event_type} block=${event.block_height}: ${error.message}`);
245
+ catch (err) {
246
+ this.logger.error(`[IndexerWS] Failed to emit indexer notification: ${err.message}`);
147
247
  }
148
248
  }
149
249
  async fetchActivity(event) {
150
250
  var _a;
151
251
  const entity_id = event.payload.entity_id;
152
- if (!entity_id) {
153
- this.logger.warn(`[IndexerWS] No entity_id for event ${event.event_type} — skipping`);
252
+ if (!entity_id)
154
253
  return undefined;
155
- }
156
254
  const changes = await this.fetchEntity(event.payload.entity_type, entity_id);
157
255
  return {
158
256
  timestamp: event.timestamp,
@@ -165,6 +263,7 @@ class IndexerWebSocketService {
165
263
  };
166
264
  }
167
265
  async fetchEntity(entityType, id) {
266
+ var _a;
168
267
  switch (entityType) {
169
268
  case 'Ecosystem':
170
269
  return (await this.indexer.getEcosystem(id));
@@ -172,46 +271,51 @@ class IndexerWebSocketService {
172
271
  return (await this.indexer.getCredentialSchema(id));
173
272
  case 'Participant':
174
273
  return (await this.indexer.getParticipant(id));
274
+ case 'Corporation':
275
+ return ((_a = (await this.indexer.getCorporation(id))) !== null && _a !== void 0 ? _a : {});
175
276
  default:
176
277
  return {};
177
278
  }
178
279
  }
179
- async applyChanges(event, activity) {
180
- const state = await (0, VeranaHelpers_1.loadSyncState)(this.options.agent);
181
- const { block_height } = event;
280
+ armWatchdog() {
281
+ this.clearWatchdog();
282
+ if (this.stopped)
283
+ return;
284
+ this.watchdog = setTimeout(() => this.forceReconnect('liveness timeout'), LIVENESS_TIMEOUT_MS);
285
+ }
286
+ clearWatchdog() {
287
+ if (this.watchdog) {
288
+ clearTimeout(this.watchdog);
289
+ this.watchdog = null;
290
+ }
291
+ }
292
+ forceReconnect(reason) {
293
+ if (this.stopped)
294
+ return;
295
+ this.logger.warn(`[IndexerWS] Forcing reconnect: ${reason}`);
296
+ this.generation++; // stops queued work so it cannot move the height past the failed event
297
+ this.clearWatchdog();
298
+ const ws = this.ws;
299
+ this.ws = null;
182
300
  try {
183
- await this.handlerRegistry.dispatch(activity, {
184
- agent: this.options.agent,
185
- block_height,
186
- operatorAddress: event.payload.sender,
187
- state,
188
- txHash: event.tx_hash,
189
- });
301
+ ws === null || ws === void 0 ? void 0 : ws.terminate();
190
302
  }
191
- catch (err) {
192
- this.logger.error(`[IndexerWS] Handler ${event.event_type} failed at block ${event.block_height}: ${err.message}`);
303
+ finally {
304
+ this.scheduleReconnect();
193
305
  }
194
- state.lastBlockHeight = Math.max(state.lastBlockHeight, event.block_height);
195
- await (0, VeranaHelpers_1.saveSyncState)(this.options.agent, state);
196
- this.logger.debug(`[IndexerWS] Block ${event.block_height}: applied ${event.event_type}`);
197
306
  }
198
307
  scheduleReconnect() {
308
+ if (this.reconnectTimer || this.stopped)
309
+ return;
199
310
  const delay = Math.min(1000 * 2 ** this.reconnectAttempt, MAX_RECONNECT_DELAY_MS);
200
311
  this.reconnectAttempt++;
201
312
  this.logger.info(`[IndexerWS] Reconnecting in ${delay}ms (attempt ${this.reconnectAttempt})`);
202
- setTimeout(() => {
313
+ this.reconnectTimer = setTimeout(() => {
314
+ this.reconnectTimer = null;
203
315
  if (!this.stopped)
204
316
  this.connect();
205
317
  }, delay);
206
318
  }
207
- async fetchInitialEvents(afterBlockHeight) {
208
- this.logger.info(`[IndexerWS] Fetching initial events after block ${afterBlockHeight}`);
209
- if (!this.options.agent.did)
210
- throw new Error('Agent does not have any defined public DID');
211
- const response = await this.indexer.getEvents(this.options.agent.did, afterBlockHeight);
212
- this.logger.info(`[IndexerWS] Fetched: count=${response.count}, after_block_height=${response.after_block_height}`);
213
- return response;
214
- }
215
319
  }
216
320
  exports.IndexerWebSocketService = IndexerWebSocketService;
217
321
  //# sourceMappingURL=IndexerWebSocketService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"IndexerWebSocketService.js","sourceRoot":"","sources":["../../src/blockchain/IndexerWebSocketService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IndexerWebSocketService.js","sourceRoot":"","sources":["../../src/blockchain/IndexerWebSocketService.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type DeliverTxResponse } from '@cosmjs/stargate';
2
- import { CreateOrUpdateParticipantSessionParams, Participant, SetParticipantOPToValidatedParams, VeranaChainConfig } from './types';
2
+ import { Coin, CreateOrUpdateParticipantSessionParams, CredentialSchema, Ecosystem, OperatorAuthorization, Participant, SelfCreateParticipantParams, SetParticipantOPToValidatedParams, StartParticipantOPParams, VeranaChainConfig, VsOperatorAuthorization } from './types';
3
3
  export declare class VeranaChainService {
4
4
  private readonly config;
5
5
  private signingClient;
@@ -7,20 +7,46 @@ export declare class VeranaChainService {
7
7
  private chainId;
8
8
  private corporationAddress;
9
9
  private ppQuery;
10
- private sessionSigningClient?;
11
- private sessionOperatorAddress?;
10
+ private deQuery;
11
+ private ecQuery;
12
+ private csQuery;
12
13
  constructor(config: VeranaChainConfig);
13
14
  get address(): string;
14
15
  get getChainId(): string;
15
16
  get corporation(): string;
17
+ get autoTriggerResolverEnabled(): boolean;
16
18
  start(): Promise<void>;
17
19
  getParticipant(id: number): Promise<Participant | undefined>;
20
+ getBalance(denom?: string): Promise<Coin>;
21
+ hasVsOperatorAuthorization(): Promise<boolean>;
22
+ listOperatorAuthorizations(operator?: string): Promise<OperatorAuthorization[]>;
23
+ listVsOperatorAuthorizations(vsOperator?: string): Promise<VsOperatorAuthorization[]>;
24
+ getEcosystem(id: number): Promise<Ecosystem | undefined>;
25
+ getCredentialSchema(id: number): Promise<CredentialSchema | undefined>;
26
+ startParticipantOP(params: StartParticipantOPParams): Promise<{
27
+ participantId: number;
28
+ txHash: string;
29
+ }>;
30
+ renewParticipantOP(id: number): Promise<{
31
+ txHash: string;
32
+ }>;
33
+ cancelParticipantOPLastRequest(id: number): Promise<{
34
+ txHash: string;
35
+ }>;
36
+ selfCreateParticipant(params: SelfCreateParticipantParams): Promise<{
37
+ participantId: number;
38
+ txHash: string;
39
+ }>;
18
40
  setParticipantOPToValidated(params: SetParticipantOPToValidatedParams): Promise<{
19
41
  txHash: string;
20
42
  }>;
21
43
  createOrUpdateParticipantSession(params: CreateOrUpdateParticipantSessionParams): Promise<{
22
44
  txHash: string;
23
45
  }>;
46
+ findActiveHolderParticipantIdByDid(did: string): Promise<number | undefined>;
47
+ triggerResolver(participantId: number): Promise<{
48
+ txHash: string;
49
+ }>;
24
50
  private broadcastMsg;
25
51
  extractIdFromEvent(txHashOrResult: string | DeliverTxResponse, eventType: string, attrKey: string): Promise<number>;
26
52
  }