@verana-labs/vs-agent-sdk 1.12.0-dev.3 → 1.12.0-dev.30
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/README.md +35 -27
- package/build/agent/VsAgent.d.ts +16 -0
- package/build/agent/VsAgent.js +78 -14
- package/build/agent/VsAgent.js.map +1 -1
- package/build/agent/createVsAgent.d.ts +3 -0
- package/build/agent/createVsAgent.js +2 -0
- package/build/agent/createVsAgent.js.map +1 -1
- package/build/blockchain/AuthorizationService.d.ts +26 -0
- package/build/blockchain/AuthorizationService.js +82 -0
- package/build/blockchain/AuthorizationService.js.map +1 -0
- package/build/blockchain/IndexerWebSocketService.d.ts +15 -9
- package/build/blockchain/IndexerWebSocketService.js +201 -97
- package/build/blockchain/IndexerWebSocketService.js.map +1 -1
- package/build/blockchain/VeranaChainService.d.ts +29 -3
- package/build/blockchain/VeranaChainService.js +164 -27
- package/build/blockchain/VeranaChainService.js.map +1 -1
- package/build/blockchain/VeranaHelpers.js +1 -0
- package/build/blockchain/VeranaHelpers.js.map +1 -1
- package/build/blockchain/VeranaIndexerService.d.ts +13 -2
- package/build/blockchain/VeranaIndexerService.js +49 -6
- package/build/blockchain/VeranaIndexerService.js.map +1 -1
- package/build/blockchain/handlers/IndexerHandlerRegistry.d.ts +4 -3
- package/build/blockchain/handlers/IndexerHandlerRegistry.js +6 -0
- package/build/blockchain/handlers/IndexerHandlerRegistry.js.map +1 -1
- package/build/blockchain/handlers/authorizationHandlers.d.ts +4 -0
- package/build/blockchain/handlers/authorizationHandlers.js +54 -0
- package/build/blockchain/handlers/authorizationHandlers.js.map +1 -0
- package/build/blockchain/handlers/defaultHandlers.d.ts +4 -1
- package/build/blockchain/handlers/defaultHandlers.js +62 -35
- package/build/blockchain/handlers/defaultHandlers.js.map +1 -1
- package/build/blockchain/handlers/index.d.ts +1 -0
- package/build/blockchain/handlers/index.js +1 -0
- package/build/blockchain/handlers/index.js.map +1 -1
- package/build/blockchain/handlers/stateMutations.d.ts +6 -1
- package/build/blockchain/handlers/stateMutations.js +146 -10
- package/build/blockchain/handlers/stateMutations.js.map +1 -1
- package/build/blockchain/index.d.ts +1 -0
- package/build/blockchain/index.js +1 -0
- package/build/blockchain/index.js.map +1 -1
- package/build/blockchain/indexerSync.d.ts +10 -0
- package/build/blockchain/indexerSync.js +34 -0
- package/build/blockchain/indexerSync.js.map +1 -0
- package/build/blockchain/types.d.ts +123 -11
- package/build/blockchain/types.js +20 -1
- package/build/blockchain/types.js.map +1 -1
- package/build/bootstrap/EcsBootstrapService.d.ts +30 -0
- package/build/bootstrap/EcsBootstrapService.js +300 -0
- package/build/bootstrap/EcsBootstrapService.js.map +1 -0
- package/build/bootstrap/index.d.ts +1 -0
- package/build/bootstrap/index.js +18 -0
- package/build/bootstrap/index.js.map +1 -0
- package/build/credentials/FullTailsFileService.d.ts +4 -4
- package/build/credentials/FullTailsFileService.js +76 -65
- package/build/credentials/FullTailsFileService.js.map +1 -1
- package/build/did/adminApiService.d.ts +2 -0
- package/build/did/adminApiService.js +17 -0
- package/build/did/adminApiService.js.map +1 -0
- package/build/did/migrateWebVhVersionTime.d.ts +9 -0
- package/build/did/migrateWebVhVersionTime.js +191 -0
- package/build/did/migrateWebVhVersionTime.js.map +1 -0
- package/build/events/VsAgentEvents.d.ts +16 -2
- package/build/events/VsAgentEvents.js +2 -0
- package/build/events/VsAgentEvents.js.map +1 -1
- package/build/events/VtFlowEvents.d.ts +3 -0
- package/build/events/VtFlowEvents.js +35 -0
- package/build/events/VtFlowEvents.js.map +1 -0
- package/build/events/index.d.ts +1 -0
- package/build/events/index.js +1 -0
- package/build/events/index.js.map +1 -1
- package/build/index.d.ts +3 -1
- package/build/index.js +8 -4
- package/build/index.js.map +1 -1
- package/build/plugins/setupBaseDidComm.js +1 -1
- package/build/plugins/setupBaseDidComm.js.map +1 -1
- package/build/types.d.ts +4 -0
- package/build/types.js +5 -1
- package/build/types.js.map +1 -1
- package/build/utils/trustCredentialStore.d.ts +2 -0
- package/build/utils/trustCredentialStore.js +49 -2
- package/build/utils/trustCredentialStore.js.map +1 -1
- package/build/utils/util.d.ts +5 -1
- package/build/utils/util.js +17 -5
- package/build/utils/util.js.map +1 -1
- package/build/vtFlow/VtFlowOrchestrator.d.ts +16 -1
- package/build/vtFlow/VtFlowOrchestrator.js +215 -87
- package/build/vtFlow/VtFlowOrchestrator.js.map +1 -1
- package/build/vtFlow/assertVerifiableService.d.ts +8 -0
- package/build/vtFlow/assertVerifiableService.js +28 -0
- package/build/vtFlow/assertVerifiableService.js.map +1 -0
- package/build/vtFlow/index.d.ts +1 -0
- package/build/vtFlow/index.js +1 -0
- package/build/vtFlow/index.js.map +1 -1
- package/package.json +12 -11
package/README.md
CHANGED
|
@@ -49,7 +49,14 @@ await indexerWs.start()
|
|
|
49
49
|
|
|
50
50
|
### Custom Handlers
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
A handler implements `IndexerEventHandler`: a `msg` (the indexer activity name it reacts to) and a
|
|
53
|
+
`handle(activity, ctx)` method. Register handlers on an `IndexerHandlerRegistry` and pass it to the
|
|
54
|
+
service via the `handlerRegistry` option. When no registry is provided, the service falls back to
|
|
55
|
+
`buildDefaultIndexerHandlerRegistry()`, so the default behavior is unchanged.
|
|
56
|
+
|
|
57
|
+
`register` stores handlers keyed by `msg`, so registering a handler for an existing `msg` **overrides**
|
|
58
|
+
the default one, and registering a new `msg` **adds** support for an event the default implementation
|
|
59
|
+
does not cover.
|
|
53
60
|
|
|
54
61
|
```typescript
|
|
55
62
|
import { buildDefaultIndexerHandlerRegistry } from '@verana-labs/vs-agent-sdk'
|
|
@@ -63,21 +70,29 @@ const indexerWs = new IndexerWebSocketService({
|
|
|
63
70
|
})
|
|
64
71
|
```
|
|
65
72
|
|
|
66
|
-
**Override a
|
|
73
|
+
**Override a default handler, or add one for an uncovered event:**
|
|
67
74
|
|
|
68
75
|
```typescript
|
|
69
76
|
import { buildDefaultIndexerHandlerRegistry } from '@verana-labs/vs-agent-sdk'
|
|
70
|
-
import type { IndexerActivity,
|
|
77
|
+
import type { IndexerActivity, IndexerHandlerContext } from '@verana-labs/vs-agent-sdk'
|
|
71
78
|
|
|
72
79
|
const registry = buildDefaultIndexerHandlerRegistry()
|
|
73
80
|
|
|
74
|
-
// Replace
|
|
75
|
-
registry.register(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
+
// Replace the default handler for a given msg with custom logic
|
|
82
|
+
registry.register({
|
|
83
|
+
msg: 'UpdateCredentialSchema',
|
|
84
|
+
handle: async (activity: IndexerActivity, ctx: IndexerHandlerContext) => {
|
|
85
|
+
ctx.agent.config.logger.info(`Schema ${activity.entity_id} updated at block ${ctx.block_height}`)
|
|
86
|
+
await db.schemas.update(activity.entity_id, activity.changes)
|
|
87
|
+
},
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
// Add a handler for an event the default implementation does not cover
|
|
91
|
+
registry.register({
|
|
92
|
+
msg: 'SomeCustomEvent',
|
|
93
|
+
handle: async (activity, ctx) => {
|
|
94
|
+
ctx.agent.config.logger.info(`Custom event ${activity.entity_id} at block ${ctx.block_height}`)
|
|
95
|
+
},
|
|
81
96
|
})
|
|
82
97
|
|
|
83
98
|
const indexerWs = new IndexerWebSocketService({
|
|
@@ -87,25 +102,18 @@ const indexerWs = new IndexerWebSocketService({
|
|
|
87
102
|
})
|
|
88
103
|
```
|
|
89
104
|
|
|
90
|
-
**
|
|
105
|
+
**Compose on top of a default handler** (run the default, then your own logic):
|
|
91
106
|
|
|
92
107
|
```typescript
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
})
|
|
103
|
-
|
|
104
|
-
// Handle participant changes with custom messages
|
|
105
|
-
registry.register('Participant', async (activity, context) => {
|
|
106
|
-
const { id, revoked } = activity.changes as any
|
|
107
|
-
const status = revoked ? 'revoked' : 'granted'
|
|
108
|
-
await agent.config.logger.info(`[Block ${context.blockHeight}] Participant ${status}: ${id}`)
|
|
108
|
+
const registry = buildDefaultIndexerHandlerRegistry()
|
|
109
|
+
const previous = registry.get('StartParticipantOP')
|
|
110
|
+
|
|
111
|
+
registry.register({
|
|
112
|
+
msg: 'StartParticipantOP',
|
|
113
|
+
handle: async (activity, ctx) => {
|
|
114
|
+
await previous?.handle(activity, ctx)
|
|
115
|
+
await myExtraSideEffect(activity, ctx)
|
|
116
|
+
},
|
|
109
117
|
})
|
|
110
118
|
|
|
111
119
|
const indexerWs = new IndexerWebSocketService({
|
package/build/agent/VsAgent.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { AskarModule, AskarModuleConfigStoreOptions } from '@credo-ts/askar';
|
|
|
3
3
|
import { Agent, AgentDependencies, DidsModule, InitConfig, W3cCredentialsModule } from '@credo-ts/core';
|
|
4
4
|
import { DidCommCredentialsModuleConfigOptions, DidCommCredentialV2Protocol, DidCommFeatureQueryOptions, DidCommJsonLdCredentialFormatService, DidCommModule, DidCommModuleConfigOptions, DidCommProofsModuleConfigOptions, DidCommProofV2Protocol } from '@credo-ts/didcomm';
|
|
5
5
|
import { VtFlowModule } from '@verana-labs/credo-ts-didcomm-vt-flow';
|
|
6
|
+
import { AuthorizationService } from '../blockchain/AuthorizationService';
|
|
6
7
|
import { VeranaChainService } from '../blockchain/VeranaChainService';
|
|
7
8
|
type VsAgentDidCommModule = DidCommModule<DidCommModuleConfigOptions & {
|
|
8
9
|
credentials: DidCommCredentialsModuleConfigOptions<[
|
|
@@ -33,17 +34,21 @@ export declare class VsAgent<TModules extends BaseAgentModules = BaseAgentModule
|
|
|
33
34
|
did?: string;
|
|
34
35
|
autoDiscloseUserProfile?: boolean;
|
|
35
36
|
publicApiBaseUrl: string;
|
|
37
|
+
adminApiServiceEndpoint?: string;
|
|
36
38
|
displayPictureUrl?: string;
|
|
37
39
|
label: string;
|
|
38
40
|
veranaChain?: VeranaChainService;
|
|
41
|
+
authorizationService?: AuthorizationService;
|
|
39
42
|
discoveryOptions?: DidCommFeatureQueryOptions[];
|
|
40
43
|
constructor(options: AgentOptions<TModules> & {
|
|
41
44
|
did?: string;
|
|
42
45
|
autoDiscloseUserProfile?: boolean;
|
|
43
46
|
publicApiBaseUrl: string;
|
|
47
|
+
adminApiServiceEndpoint?: string;
|
|
44
48
|
displayPictureUrl?: string;
|
|
45
49
|
label: string;
|
|
46
50
|
veranaChain?: VeranaChainService;
|
|
51
|
+
authorizationService?: AuthorizationService;
|
|
47
52
|
discoveryOptions?: DidCommFeatureQueryOptions[];
|
|
48
53
|
});
|
|
49
54
|
private get hasUserProfile();
|
|
@@ -52,6 +57,15 @@ export declare class VsAgent<TModules extends BaseAgentModules = BaseAgentModule
|
|
|
52
57
|
private findEd25519VerificationMethodId;
|
|
53
58
|
private getDidCommServices;
|
|
54
59
|
private persistDidDocumentKey;
|
|
60
|
+
/**
|
|
61
|
+
* Fix a webvh update-key mapping whose `didDocumentRelativeKeyId` was stored as the full multibase
|
|
62
|
+
* (e.g. `#z6Mk...`) while the DID document verification method uses a short fragment (e.g. `#BVhGnL79`).
|
|
63
|
+
* `getKmsKeyIdForVerifiacationMethod` matches by suffix (`vm.id.endsWith(relativeKeyId)`), so the
|
|
64
|
+
* mismatch leaves the update key unresolvable and every webvh update fails with
|
|
65
|
+
* "The key ID must be present before the log can be edited." The private key is present in the KMS;
|
|
66
|
+
* only the mapping label is wrong. Idempotent: a mapping that already correlates to a VM is left alone.
|
|
67
|
+
*/
|
|
68
|
+
private repairWebvhUpdateKeyMapping;
|
|
55
69
|
private createAndAddDidCommKeysAndServices;
|
|
56
70
|
private createAndAddLinkedVpServices;
|
|
57
71
|
/**
|
|
@@ -60,6 +74,7 @@ export declare class VsAgent<TModules extends BaseAgentModules = BaseAgentModule
|
|
|
60
74
|
*/
|
|
61
75
|
private createAndAddWebVhImplicitServices;
|
|
62
76
|
private createAndAddAnonCredsServices;
|
|
77
|
+
private applyAdminApiService;
|
|
63
78
|
}
|
|
64
79
|
export interface VsAgentOptions {
|
|
65
80
|
config: InitConfig;
|
|
@@ -67,6 +82,7 @@ export interface VsAgentOptions {
|
|
|
67
82
|
autoDiscloseUserProfile?: boolean;
|
|
68
83
|
dependencies: AgentDependencies;
|
|
69
84
|
publicApiBaseUrl: string;
|
|
85
|
+
adminApiServiceEndpoint?: string;
|
|
70
86
|
masterListCscaLocation?: string;
|
|
71
87
|
endpoints: string[];
|
|
72
88
|
walletConfig: AskarModuleConfigStoreOptions;
|
package/build/agent/VsAgent.js
CHANGED
|
@@ -3,9 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.VsAgent = void 0;
|
|
4
4
|
const core_1 = require("@credo-ts/core");
|
|
5
5
|
const didwebvh_ts_1 = require("didwebvh-ts");
|
|
6
|
+
const adminApiService_1 = require("../did/adminApiService");
|
|
6
7
|
const migrateWebVhLog_1 = require("../did/migrateWebVhLog");
|
|
8
|
+
const migrateWebVhVersionTime_1 = require("../did/migrateWebVhVersionTime");
|
|
7
9
|
const BaseMessageEvents_1 = require("../events/BaseMessageEvents");
|
|
8
10
|
const ConnectionEvents_1 = require("../events/ConnectionEvents");
|
|
11
|
+
const VtFlowEvents_1 = require("../events/VtFlowEvents");
|
|
9
12
|
const MANAGED_DIDCOMM_SERVICE_TYPES = [core_1.DidCommV1Service.type, core_1.NewDidCommV2Service.type];
|
|
10
13
|
class VsAgent extends core_1.Agent {
|
|
11
14
|
constructor(options) {
|
|
@@ -13,17 +16,23 @@ class VsAgent extends core_1.Agent {
|
|
|
13
16
|
this.did = options.did;
|
|
14
17
|
this.autoDiscloseUserProfile = options.autoDiscloseUserProfile;
|
|
15
18
|
this.publicApiBaseUrl = options.publicApiBaseUrl;
|
|
19
|
+
this.adminApiServiceEndpoint = options.adminApiServiceEndpoint;
|
|
16
20
|
this.displayPictureUrl = options.displayPictureUrl;
|
|
17
21
|
this.label = options.label;
|
|
18
22
|
this.veranaChain = options.veranaChain;
|
|
23
|
+
this.authorizationService = options.authorizationService;
|
|
19
24
|
this.discoveryOptions = options.discoveryOptions;
|
|
20
25
|
}
|
|
21
26
|
get hasUserProfile() {
|
|
22
27
|
return 'userProfile' in this.modules;
|
|
23
28
|
}
|
|
24
29
|
async initialize() {
|
|
25
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
30
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
26
31
|
await super.initialize();
|
|
32
|
+
const logger = this.config.logger;
|
|
33
|
+
await (0, ConnectionEvents_1.connectionEvents)(this, { discoveryOptions: this.discoveryOptions, logger });
|
|
34
|
+
await (0, BaseMessageEvents_1.baseMessageEvents)(this, logger);
|
|
35
|
+
await (0, VtFlowEvents_1.vtFlowEvents)(this, logger);
|
|
27
36
|
if (this.hasUserProfile) {
|
|
28
37
|
// Make sure default User Profile corresponds to settings in environment variables
|
|
29
38
|
const imageUrl = this.displayPictureUrl;
|
|
@@ -50,6 +59,7 @@ class VsAgent extends core_1.Agent {
|
|
|
50
59
|
await this.createAndAddLinkedVpServices(didDocument);
|
|
51
60
|
// Add AnonCreds Services
|
|
52
61
|
await this.createAndAddAnonCredsServices(didDocument);
|
|
62
|
+
this.applyAdminApiService(didDocument);
|
|
53
63
|
await this.dids.create({
|
|
54
64
|
method: 'web',
|
|
55
65
|
domain,
|
|
@@ -84,6 +94,7 @@ class VsAgent extends core_1.Agent {
|
|
|
84
94
|
// The webvh registrar doesn't merge new keys into the DidRecord on update,
|
|
85
95
|
// so persist the DIDComm key mapping directly on the existing record.
|
|
86
96
|
await this.persistDidDocumentKey(publicDid, didCommKey);
|
|
97
|
+
this.applyAdminApiService(didDocument);
|
|
87
98
|
const result = await this.dids.update({ did: publicDid, didDocument });
|
|
88
99
|
if (result.didState.state !== 'finished') {
|
|
89
100
|
this.logger.error(`Cannot update DID ${publicDid}`);
|
|
@@ -97,13 +108,13 @@ class VsAgent extends core_1.Agent {
|
|
|
97
108
|
}
|
|
98
109
|
return;
|
|
99
110
|
}
|
|
100
|
-
//
|
|
101
|
-
//
|
|
102
|
-
//
|
|
103
|
-
//
|
|
104
|
-
// log in-place, preserving entry #1 (and therefore the SCID and the public DID).
|
|
111
|
+
// Ensure the stored did:webvh log is resolvable under the current didwebvh-ts version:
|
|
112
|
+
// <2.7.4 wrote broken entry hashes (SCID placeholder), and >=2.8.0 rejects the
|
|
113
|
+
// same-second versionTimes the old create+update-at-init flow produced. Both migrations
|
|
114
|
+
// rebuild the log in-place, preserving entry #1 (and therefore the SCID and public DID).
|
|
105
115
|
if (parsedDid.method === 'webvh') {
|
|
106
116
|
try {
|
|
117
|
+
await (0, migrateWebVhVersionTime_1.migrateWebVhVersionTimeIfBroken)(this.agentContext, existingRecord, this.logger);
|
|
107
118
|
await (0, migrateWebVhLog_1.migrateWebVhLogIfBroken)(this.agentContext, existingRecord, this.logger);
|
|
108
119
|
}
|
|
109
120
|
catch (error) {
|
|
@@ -120,6 +131,9 @@ class VsAgent extends core_1.Agent {
|
|
|
120
131
|
const didRepository = this.dependencyManager.resolve(core_1.DidRepository);
|
|
121
132
|
await didRepository.update(this.agentContext, existingRecord);
|
|
122
133
|
}
|
|
134
|
+
// Fix a legacy webvh update-key mapping before the self-heal update below relies on it.
|
|
135
|
+
if (parsedDid.method === 'webvh')
|
|
136
|
+
await this.repairWebvhUpdateKeyMapping(existingRecord);
|
|
123
137
|
// DID Already exists: update it in case that agent parameters have been changed. At the moment, we can only update
|
|
124
138
|
// DIDComm endpoints, so we'll only replace the service (if different from previous)
|
|
125
139
|
const didDocument = existingRecord.didDocument;
|
|
@@ -136,7 +150,9 @@ class VsAgent extends core_1.Agent {
|
|
|
136
150
|
const id = typeof a === 'string' ? a : a.id;
|
|
137
151
|
return id !== ed25519VerificationMethodId;
|
|
138
152
|
});
|
|
139
|
-
|
|
153
|
+
const currentAdminEntry = ((_f = didDocument.service) !== null && _f !== void 0 ? _f : []).find(s => s.type === 'VsAgentAdminAPI');
|
|
154
|
+
const adminEntryChanged = (currentAdminEntry === null || currentAdminEntry === void 0 ? void 0 : currentAdminEntry.serviceEndpoint) !== this.adminApiServiceEndpoint;
|
|
155
|
+
if (hasLegacyMethods || servicesChanged || authHasUpdateKey || adminEntryChanged) {
|
|
140
156
|
if (servicesChanged && ed25519VerificationMethodId) {
|
|
141
157
|
didDocument.service = [
|
|
142
158
|
...(didDocument.service
|
|
@@ -145,6 +161,7 @@ class VsAgent extends core_1.Agent {
|
|
|
145
161
|
...this.getDidCommServices(didDocument.id, ed25519VerificationMethodId),
|
|
146
162
|
];
|
|
147
163
|
}
|
|
164
|
+
this.applyAdminApiService(didDocument);
|
|
148
165
|
const newKeys = [];
|
|
149
166
|
if (hasLegacyMethods) {
|
|
150
167
|
newKeys.push(await this.createAndAddDidCommKeysAndServices(didDocument));
|
|
@@ -156,18 +173,25 @@ class VsAgent extends core_1.Agent {
|
|
|
156
173
|
for (const key of newKeys)
|
|
157
174
|
await this.persistDidDocumentKey(didDocument.id, key);
|
|
158
175
|
}
|
|
159
|
-
|
|
160
|
-
|
|
176
|
+
// The webvh registrar returns state:"failed" WITHOUT throwing, so an unchecked update
|
|
177
|
+
// silently no-ops. Check the result and surface the reason instead of assuming success.
|
|
178
|
+
const updateResult = await this.dids.update(Object.assign({ did: didDocument.id, didDocument }, (newKeys.length && parsedDid.method === 'web' ? { keys: newKeys } : {})));
|
|
179
|
+
if (updateResult.didState.state !== 'finished') {
|
|
180
|
+
(_g = this.logger) === null || _g === void 0 ? void 0 : _g.error('Public did record update failed to persist', {
|
|
181
|
+
did: didDocument.id,
|
|
182
|
+
state: updateResult.didState.state,
|
|
183
|
+
reason: updateResult.didState.reason,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
(_h = this.logger) === null || _h === void 0 ? void 0 : _h.debug('Public did record updated');
|
|
188
|
+
}
|
|
161
189
|
}
|
|
162
190
|
else {
|
|
163
|
-
(
|
|
191
|
+
(_j = this.logger) === null || _j === void 0 ? void 0 : _j.debug('Existing DID record found. No updates');
|
|
164
192
|
}
|
|
165
193
|
this.did = existingRecord.did;
|
|
166
194
|
}
|
|
167
|
-
// Initialize events
|
|
168
|
-
const logger = this.config.logger;
|
|
169
|
-
await (0, ConnectionEvents_1.connectionEvents)(this, { discoveryOptions: this.discoveryOptions, logger });
|
|
170
|
-
await (0, BaseMessageEvents_1.baseMessageEvents)(this, logger);
|
|
171
195
|
}
|
|
172
196
|
async findCreatedDid(parsedDid) {
|
|
173
197
|
const didRepository = this.dependencyManager.resolve(core_1.DidRepository);
|
|
@@ -231,6 +255,43 @@ class VsAgent extends core_1.Agent {
|
|
|
231
255
|
record.keys = [...existing, key];
|
|
232
256
|
await didRepository.update(this.agentContext, record);
|
|
233
257
|
}
|
|
258
|
+
/**
|
|
259
|
+
* Fix a webvh update-key mapping whose `didDocumentRelativeKeyId` was stored as the full multibase
|
|
260
|
+
* (e.g. `#z6Mk...`) while the DID document verification method uses a short fragment (e.g. `#BVhGnL79`).
|
|
261
|
+
* `getKmsKeyIdForVerifiacationMethod` matches by suffix (`vm.id.endsWith(relativeKeyId)`), so the
|
|
262
|
+
* mismatch leaves the update key unresolvable and every webvh update fails with
|
|
263
|
+
* "The key ID must be present before the log can be edited." The private key is present in the KMS;
|
|
264
|
+
* only the mapping label is wrong. Idempotent: a mapping that already correlates to a VM is left alone.
|
|
265
|
+
*/
|
|
266
|
+
async repairWebvhUpdateKeyMapping(record) {
|
|
267
|
+
var _a, _b, _c;
|
|
268
|
+
if (!record.didDocument || !((_a = record.keys) === null || _a === void 0 ? void 0 : _a.length))
|
|
269
|
+
return;
|
|
270
|
+
const vms = (_b = record.didDocument.verificationMethod) !== null && _b !== void 0 ? _b : [];
|
|
271
|
+
let repaired = false;
|
|
272
|
+
for (const key of record.keys) {
|
|
273
|
+
const rel = key.didDocumentRelativeKeyId;
|
|
274
|
+
if (vms.some(vm => vm.id.endsWith(rel)))
|
|
275
|
+
continue; // already correlates
|
|
276
|
+
const vm = vms.find(v => `#${v.publicKeyMultibase}` === rel); // was stored as #<multibase>
|
|
277
|
+
if (!vm)
|
|
278
|
+
continue;
|
|
279
|
+
const correct = `#${vm.id.split('#')[1]}`;
|
|
280
|
+
if (correct !== rel) {
|
|
281
|
+
(_c = this.logger) === null || _c === void 0 ? void 0 : _c.warn('Fixing webvh update-key mapping', {
|
|
282
|
+
from: rel,
|
|
283
|
+
to: correct,
|
|
284
|
+
kmsKeyId: key.kmsKeyId,
|
|
285
|
+
});
|
|
286
|
+
key.didDocumentRelativeKeyId = correct;
|
|
287
|
+
repaired = true;
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (repaired) {
|
|
291
|
+
const didRepository = this.dependencyManager.resolve(core_1.DidRepository);
|
|
292
|
+
await didRepository.update(this.agentContext, record);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
234
295
|
async createAndAddDidCommKeysAndServices(didDocument) {
|
|
235
296
|
var _a, _b, _c, _d, _e;
|
|
236
297
|
const publicDid = didDocument.id;
|
|
@@ -358,6 +419,9 @@ class VsAgent extends core_1.Agent {
|
|
|
358
419
|
}),
|
|
359
420
|
];
|
|
360
421
|
}
|
|
422
|
+
applyAdminApiService(didDocument) {
|
|
423
|
+
(0, adminApiService_1.applyAdminApiServiceEntry)(didDocument, this.adminApiServiceEndpoint);
|
|
424
|
+
}
|
|
361
425
|
}
|
|
362
426
|
exports.VsAgent = VsAgent;
|
|
363
427
|
//# sourceMappingURL=VsAgent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VsAgent.js","sourceRoot":"","sources":["../../src/agent/VsAgent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VsAgent.js","sourceRoot":"","sources":["../../src/agent/VsAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { DidCommFeatureQueryOptions } from '@credo-ts/didcomm';
|
|
2
2
|
import { AskarModuleConfigStoreOptions } from '@credo-ts/askar';
|
|
3
3
|
import { AgentDependencies, InitConfig, LogLevel } from '@credo-ts/core';
|
|
4
|
+
import { AuthorizationService } from '../blockchain/AuthorizationService';
|
|
4
5
|
import { VeranaChainService } from '../blockchain/VeranaChainService';
|
|
5
6
|
import { Plugin } from '../types';
|
|
6
7
|
import { BaseAgentModules, VsAgent } from './VsAgent';
|
|
@@ -16,6 +17,7 @@ export interface CreateVsAgentOptions<T extends Plugin[]> {
|
|
|
16
17
|
did?: string;
|
|
17
18
|
label: string;
|
|
18
19
|
publicApiBaseUrl: string;
|
|
20
|
+
adminApiServiceEndpoint?: string;
|
|
19
21
|
displayPictureUrl?: string;
|
|
20
22
|
autoDiscloseUserProfile?: boolean;
|
|
21
23
|
masterListCscaLocation?: string;
|
|
@@ -23,6 +25,7 @@ export interface CreateVsAgentOptions<T extends Plugin[]> {
|
|
|
23
25
|
dependencies: AgentDependencies;
|
|
24
26
|
logLevel?: LogLevel;
|
|
25
27
|
veranaChain?: VeranaChainService;
|
|
28
|
+
authorizationService?: AuthorizationService;
|
|
26
29
|
discoveryOptions?: DidCommFeatureQueryOptions[];
|
|
27
30
|
}
|
|
28
31
|
/**
|
|
@@ -36,9 +36,11 @@ function createVsAgent(options) {
|
|
|
36
36
|
did: options.did,
|
|
37
37
|
autoDiscloseUserProfile: options.autoDiscloseUserProfile,
|
|
38
38
|
publicApiBaseUrl: options.publicApiBaseUrl,
|
|
39
|
+
adminApiServiceEndpoint: options.adminApiServiceEndpoint,
|
|
39
40
|
displayPictureUrl: options.displayPictureUrl,
|
|
40
41
|
label: options.label,
|
|
41
42
|
veranaChain: options.veranaChain,
|
|
43
|
+
authorizationService: options.authorizationService,
|
|
42
44
|
discoveryOptions: options.discoveryOptions,
|
|
43
45
|
});
|
|
44
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createVsAgent.js","sourceRoot":"","sources":["../../src/agent/createVsAgent.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"createVsAgent.js","sourceRoot":"","sources":["../../src/agent/createVsAgent.ts"],"names":[],"mappings":";;AAkEA,sCAyBC;AAlFD,uCAAqD;AAgCrD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,aAAa,CAC3B,OAAgC;IAEhC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAC1C,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,iCAAM,GAAG,GAAK,MAAM,CAAC,OAAO,EAAG,EAChD,EAA6B,CACV,CAAA;IAErB,OAAO,IAAI,iBAAO,CAAmB;QACnC,MAAM,kCACD,OAAO,CAAC,MAAM,KACjB,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,GAC/D;QACD,OAAO,EAAE,aAAa;QACtB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;QACxD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;QACxD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;KAC3C,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BaseLogger } from '@credo-ts/core';
|
|
2
|
+
import { VeranaChainService } from './VeranaChainService';
|
|
3
|
+
import { CachedVsOperatorAuthorizationRecord } from './types';
|
|
4
|
+
export interface AuthorizationServiceConfig {
|
|
5
|
+
chain: VeranaChainService;
|
|
6
|
+
logger: BaseLogger;
|
|
7
|
+
minRefreshIntervalMs?: number;
|
|
8
|
+
}
|
|
9
|
+
/** VS operator authorization records cached for the admin API (https://github.com/verana-labs/vs-agent/issues/472); operator authorizations are queried on demand. */
|
|
10
|
+
export declare class AuthorizationService {
|
|
11
|
+
private vsoaByParticipant;
|
|
12
|
+
private lastRefreshAt;
|
|
13
|
+
private readonly chain;
|
|
14
|
+
private readonly logger;
|
|
15
|
+
private readonly minRefreshIntervalMs;
|
|
16
|
+
constructor(config: AuthorizationServiceConfig);
|
|
17
|
+
refreshForOperator(): Promise<void>;
|
|
18
|
+
invalidateParticipant(participantId: number): void;
|
|
19
|
+
canSign(participantId: number, msgType: string): boolean;
|
|
20
|
+
getVsOperatorAuthorizationRecord(participantId: number): CachedVsOperatorAuthorizationRecord | undefined;
|
|
21
|
+
listVsOperatorAuthorizationRecords(): CachedVsOperatorAuthorizationRecord[];
|
|
22
|
+
hasFeegrant(participantId: number): boolean;
|
|
23
|
+
agentHoldsOperatorGrant(msgType: string): Promise<boolean>;
|
|
24
|
+
callerHoldsOperatorGrant(account: string, msgType: string): Promise<boolean>;
|
|
25
|
+
callerHoldsVsOperatorGrant(account: string, participantId: number, msgType: string): Promise<boolean>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
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.minRefreshIntervalMs = (_a = config.minRefreshIntervalMs) !== null && _a !== void 0 ? _a : 2000;
|
|
25
|
+
}
|
|
26
|
+
async refreshForOperator() {
|
|
27
|
+
// Catch-up replays hit the same current chain state, so back-to-back refreshes are skipped.
|
|
28
|
+
if (Date.now() - this.lastRefreshAt < this.minRefreshIntervalMs)
|
|
29
|
+
return;
|
|
30
|
+
const vsoas = await this.chain.listVsOperatorAuthorizations();
|
|
31
|
+
this.lastRefreshAt = Date.now();
|
|
32
|
+
const rebuilt = new Map();
|
|
33
|
+
for (const vsoa of vsoas) {
|
|
34
|
+
for (const record of vsoa.records) {
|
|
35
|
+
rebuilt.set(record.participantId, Object.assign(Object.assign({}, record), { corporationId: vsoa.corporationId, vsOperator: vsoa.vsOperator }));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
this.vsoaByParticipant = rebuilt;
|
|
39
|
+
this.logger.debug(`[Authorization] cache refreshed: ${rebuilt.size} VSOA record(s)`);
|
|
40
|
+
}
|
|
41
|
+
invalidateParticipant(participantId) {
|
|
42
|
+
if (this.vsoaByParticipant.delete(participantId)) {
|
|
43
|
+
this.logger.debug(`[Authorization] invalidated VSOA record for participant ${participantId}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
canSign(participantId, msgType) {
|
|
47
|
+
const record = this.vsoaByParticipant.get(participantId);
|
|
48
|
+
return (!!record && record.msgTypes.includes(msgType) && isVsoaRecordActive(record.expiration, record.period));
|
|
49
|
+
}
|
|
50
|
+
getVsOperatorAuthorizationRecord(participantId) {
|
|
51
|
+
return this.vsoaByParticipant.get(participantId);
|
|
52
|
+
}
|
|
53
|
+
listVsOperatorAuthorizationRecords() {
|
|
54
|
+
return [...this.vsoaByParticipant.values()];
|
|
55
|
+
}
|
|
56
|
+
// The feegrant mirror requires a strictly future expiration and is not renewed by the
|
|
57
|
+
// lazy cycle (MOD-DE-MSG-5-5), so no period leniency here.
|
|
58
|
+
hasFeegrant(participantId) {
|
|
59
|
+
const record = this.vsoaByParticipant.get(participantId);
|
|
60
|
+
return (!!record && record.withFeegrant && record.expiration != null && record.expiration.getTime() > Date.now());
|
|
61
|
+
}
|
|
62
|
+
async agentHoldsOperatorGrant(msgType) {
|
|
63
|
+
return this.callerHoldsOperatorGrant(this.chain.address, msgType);
|
|
64
|
+
}
|
|
65
|
+
// A blank account must fail closed: the chain treats an empty filter as "any account".
|
|
66
|
+
async callerHoldsOperatorGrant(account, msgType) {
|
|
67
|
+
if (!account.trim())
|
|
68
|
+
return false;
|
|
69
|
+
const auths = await this.chain.listOperatorAuthorizations(account);
|
|
70
|
+
return auths.some(a => a.msgTypes.includes(msgType) && isOperatorAuthorizationActive(a.expiration, a.period));
|
|
71
|
+
}
|
|
72
|
+
async callerHoldsVsOperatorGrant(account, participantId, msgType) {
|
|
73
|
+
if (!account.trim())
|
|
74
|
+
return false;
|
|
75
|
+
const vsoas = await this.chain.listVsOperatorAuthorizations(account);
|
|
76
|
+
return vsoas.some(vsoa => vsoa.records.some(r => r.participantId === participantId &&
|
|
77
|
+
r.msgTypes.includes(msgType) &&
|
|
78
|
+
isVsoaRecordActive(r.expiration, r.period)));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.AuthorizationService = AuthorizationService;
|
|
82
|
+
//# 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
|
|
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
|
|
29
|
-
private
|
|
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
|
|
37
|
+
private armWatchdog;
|
|
38
|
+
private clearWatchdog;
|
|
39
|
+
private forceReconnect;
|
|
33
40
|
private scheduleReconnect;
|
|
34
|
-
private fetchInitialEvents;
|
|
35
41
|
}
|