@verana-labs/vs-agent-sdk 2.0.0-dev.4 → 2.0.0-dev.41
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/build/agent/VsAgent.d.ts +8 -0
- package/build/agent/VsAgent.js +52 -50
- package/build/agent/VsAgent.js.map +1 -1
- package/build/agent/createVsAgent.d.ts +5 -0
- package/build/agent/createVsAgent.js +3 -0
- package/build/agent/createVsAgent.js.map +1 -1
- package/build/blockchain/AuthorizationService.d.ts +0 -2
- package/build/blockchain/AuthorizationService.js +0 -18
- package/build/blockchain/AuthorizationService.js.map +1 -1
- package/build/blockchain/IndexerWebSocketService.d.ts +6 -1
- package/build/blockchain/IndexerWebSocketService.js +40 -15
- package/build/blockchain/IndexerWebSocketService.js.map +1 -1
- package/build/blockchain/VeranaChainService.d.ts +5 -1
- package/build/blockchain/VeranaChainService.js +54 -5
- package/build/blockchain/VeranaChainService.js.map +1 -1
- package/build/blockchain/VeranaIndexerService.js +4 -4
- package/build/blockchain/VeranaIndexerService.js.map +1 -1
- package/build/blockchain/handlers/defaultHandlers.js +2 -0
- 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/selfIssuanceHandlers.d.ts +13 -0
- package/build/blockchain/handlers/selfIssuanceHandlers.js +71 -0
- package/build/blockchain/handlers/selfIssuanceHandlers.js.map +1 -0
- package/build/blockchain/handlers/stateMutations.d.ts +16 -2
- package/build/blockchain/handlers/stateMutations.js +202 -28
- package/build/blockchain/handlers/stateMutations.js.map +1 -1
- package/build/blockchain/types.d.ts +20 -1
- package/build/blockchain/types.js.map +1 -1
- package/build/bootstrap/EcsBootstrapService.d.ts +16 -3
- package/build/bootstrap/EcsBootstrapService.js +195 -74
- package/build/bootstrap/EcsBootstrapService.js.map +1 -1
- package/build/events/ConnectionEvents.js +110 -82
- package/build/events/ConnectionEvents.js.map +1 -1
- package/build/plugins/setupBaseDidComm.js +3 -2
- package/build/plugins/setupBaseDidComm.js.map +1 -1
- package/build/transports/VsAgentWsInboundTransport.d.ts +1 -1
- package/build/transports/VsAgentWsInboundTransport.js +20 -14
- package/build/transports/VsAgentWsInboundTransport.js.map +1 -1
- package/build/utils/agent.d.ts +15 -0
- package/build/utils/agent.js +53 -4
- package/build/utils/agent.js.map +1 -1
- package/build/utils/didReadiness.d.ts +9 -0
- package/build/utils/didReadiness.js +42 -0
- package/build/utils/didReadiness.js.map +1 -0
- package/build/utils/ecsClaims.d.ts +47 -0
- package/build/utils/ecsClaims.js +120 -0
- package/build/utils/ecsClaims.js.map +1 -0
- package/build/utils/index.d.ts +2 -0
- package/build/utils/index.js +2 -0
- package/build/utils/index.js.map +1 -1
- package/build/utils/selfIssuedEcsCredential.d.ts +4 -0
- package/build/utils/selfIssuedEcsCredential.js +140 -0
- package/build/utils/selfIssuedEcsCredential.js.map +1 -0
- package/build/utils/setupSelfTr.d.ts +3 -56
- package/build/utils/setupSelfTr.js +41 -249
- package/build/utils/setupSelfTr.js.map +1 -1
- package/build/utils/trustCredentialStore.d.ts +32 -6
- package/build/utils/trustCredentialStore.js +182 -82
- package/build/utils/trustCredentialStore.js.map +1 -1
- package/build/utils/vtjscResolver.d.ts +18 -0
- package/build/utils/vtjscResolver.js +54 -0
- package/build/utils/vtjscResolver.js.map +1 -0
- package/build/vtFlow/VtFlowOrchestrator.d.ts +47 -9
- package/build/vtFlow/VtFlowOrchestrator.js +96 -55
- package/build/vtFlow/VtFlowOrchestrator.js.map +1 -1
- package/build/vtFlow/assertVerifiableService.d.ts +1 -0
- package/build/vtFlow/assertVerifiableService.js +45 -5
- package/build/vtFlow/assertVerifiableService.js.map +1 -1
- package/build/vtFlow/ecsIssuanceExemption.d.ts +12 -0
- package/build/vtFlow/ecsIssuanceExemption.js +84 -0
- package/build/vtFlow/ecsIssuanceExemption.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 +11 -11
|
@@ -10,101 +10,129 @@ const connectionEvents = async (agent, config) => {
|
|
|
10
10
|
const alternativeDids = agentPublicDidRecord === null || agentPublicDidRecord === void 0 ? void 0 : agentPublicDidRecord.getTag('alternativeDids');
|
|
11
11
|
const agentPublicDids = [agent.did, ...(Array.isArray(alternativeDids) ? alternativeDids : [])];
|
|
12
12
|
agent.events.on(didcomm_1.DidCommConnectionEventTypes.DidCommConnectionStateChanged, async ({ payload }) => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
.
|
|
13
|
+
// an event listener is never awaited, so a rejection here would surface as an
|
|
14
|
+
// unhandled rejection and take the process down
|
|
15
|
+
try {
|
|
16
|
+
const record = payload.connectionRecord;
|
|
17
|
+
if (record.outOfBandId && !record.getTag('parentConnectionId')) {
|
|
18
|
+
const outOfBandRecord = await agent.didcomm.oob.findById(record.outOfBandId);
|
|
19
|
+
const parentConnectionId = outOfBandRecord === null || outOfBandRecord === void 0 ? void 0 : outOfBandRecord.getTag('parentConnectionId');
|
|
20
|
+
// Tag connection with its parent
|
|
21
|
+
if (parentConnectionId) {
|
|
22
|
+
record.setTag('parentConnectionId', parentConnectionId);
|
|
23
|
+
await agent.context.dependencyManager
|
|
24
|
+
.resolve(didcomm_1.DidCommConnectionRepository)
|
|
25
|
+
.update(agent.context, record);
|
|
26
|
+
}
|
|
23
27
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
if (record.state === didcomm_1.DidCommDidExchangeState.Completed) {
|
|
29
|
+
if (config.discoveryOptions)
|
|
30
|
+
await agent.didcomm.discovery.queryFeatures({
|
|
31
|
+
connectionId: record.id,
|
|
32
|
+
protocolVersion: 'v2',
|
|
33
|
+
queries: config.discoveryOptions,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// If an out-of-band ID exists, use the invitation to find the thread IDs
|
|
37
|
+
// and identify the invitation that created the connection to update its state.
|
|
38
|
+
if (record.outOfBandId) {
|
|
39
|
+
const invitationRecord = await agent.didcomm.oob.findById(record.outOfBandId);
|
|
40
|
+
const threadIds = invitationRecord === null || invitationRecord === void 0 ? void 0 : invitationRecord.getTag('invitationRequestsThreadIds');
|
|
41
|
+
threadIds === null || threadIds === void 0 ? void 0 : threadIds.map(async (threadId) => {
|
|
42
|
+
const [proofRecord] = await agent.didcomm.proofs.findAllByQuery({ threadId });
|
|
43
|
+
if (!proofRecord)
|
|
44
|
+
return;
|
|
45
|
+
const callbackParameters = proofRecord.metadata.get('_2060/callbackParameters');
|
|
46
|
+
if (callbackParameters &&
|
|
47
|
+
callbackParameters.callbackUrl &&
|
|
48
|
+
record.state === didcomm_1.DidCommDidExchangeState.RequestReceived) {
|
|
49
|
+
(0, VsAgentEvents_1.emitVsAgentEvent)(agent, VsAgentEvents_1.VsAgentEventTypes.PresentationStateUpdated, new vs_agent_model_1.PresentationStateUpdated({
|
|
50
|
+
proofExchangeId: proofRecord.id,
|
|
51
|
+
callbackUrl: callbackParameters.callbackUrl,
|
|
52
|
+
state: vs_agent_model_1.PresentationState.CONNECTED,
|
|
53
|
+
ref: callbackParameters.ref,
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
31
56
|
});
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const [proofRecord] = await agent.didcomm.proofs.findAllByQuery({ threadId });
|
|
40
|
-
if (!proofRecord)
|
|
41
|
-
return;
|
|
42
|
-
const callbackParameters = proofRecord.metadata.get('_2060/callbackParameters');
|
|
43
|
-
if (callbackParameters &&
|
|
44
|
-
callbackParameters.callbackUrl &&
|
|
45
|
-
record.state === didcomm_1.DidCommDidExchangeState.RequestReceived) {
|
|
46
|
-
(0, VsAgentEvents_1.emitVsAgentEvent)(agent, VsAgentEvents_1.VsAgentEventTypes.PresentationStateUpdated, new vs_agent_model_1.PresentationStateUpdated({
|
|
47
|
-
proofExchangeId: proofRecord.id,
|
|
48
|
-
callbackUrl: callbackParameters.callbackUrl,
|
|
49
|
-
state: vs_agent_model_1.PresentationState.CONNECTED,
|
|
50
|
-
ref: callbackParameters.ref,
|
|
51
|
-
}));
|
|
52
|
-
}
|
|
57
|
+
}
|
|
58
|
+
// If discovery is enabled, send an empty 'completed' state so that the recipient knows to expect async features.
|
|
59
|
+
const body = new vs_agent_model_1.ConnectionStateUpdated({
|
|
60
|
+
connectionId: record.id,
|
|
61
|
+
invitationId: record.outOfBandId,
|
|
62
|
+
state: record.state,
|
|
63
|
+
metadata: config.discoveryOptions ? {} : undefined,
|
|
53
64
|
});
|
|
65
|
+
(0, VsAgentEvents_1.emitVsAgentEvent)(agent, VsAgentEvents_1.VsAgentEventTypes.ConnectionStateUpdated, body);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
config.logger.error(`[connection-events] state change handler failed: ${error.message}`);
|
|
54
69
|
}
|
|
55
|
-
// If discovery is enabled, send an empty 'completed' state so that the recipient knows to expect async features.
|
|
56
|
-
const body = new vs_agent_model_1.ConnectionStateUpdated({
|
|
57
|
-
connectionId: record.id,
|
|
58
|
-
invitationId: record.outOfBandId,
|
|
59
|
-
state: record.state,
|
|
60
|
-
metadata: config.discoveryOptions ? {} : undefined,
|
|
61
|
-
});
|
|
62
|
-
(0, VsAgentEvents_1.emitVsAgentEvent)(agent, VsAgentEvents_1.VsAgentEventTypes.ConnectionStateUpdated, body);
|
|
63
70
|
});
|
|
64
71
|
agent.events.on(didcomm_1.DidCommConnectionEventTypes.DidCommConnectionDidRotated, async ({ payload }) => {
|
|
65
72
|
var _a, _b;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
// an event listener is never awaited, so a rejection here would surface as an
|
|
74
|
+
// unhandled rejection and take the process down
|
|
75
|
+
try {
|
|
76
|
+
const record = payload.connectionRecord;
|
|
77
|
+
const isTerminationByPeer = record.theirDid === undefined && ((_b = (_a = record.previousTheirDids) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0;
|
|
78
|
+
if (!isTerminationByPeer)
|
|
79
|
+
return;
|
|
80
|
+
const body = new vs_agent_model_1.ConnectionStateUpdated({
|
|
81
|
+
connectionId: record.id,
|
|
82
|
+
invitationId: record.outOfBandId,
|
|
83
|
+
state: 'terminated',
|
|
84
|
+
});
|
|
85
|
+
(0, VsAgentEvents_1.emitVsAgentEvent)(agent, VsAgentEvents_1.VsAgentEventTypes.ConnectionStateUpdated, body);
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
config.logger.error(`[connection-events] did rotated handler failed: ${error.message}`);
|
|
89
|
+
}
|
|
76
90
|
});
|
|
77
91
|
agent.events.on(didcomm_1.DidCommDiscoverFeaturesEventTypes.DisclosureReceived, async ({ payload }) => {
|
|
78
92
|
var _a;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
.
|
|
83
|
-
.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
// an event listener is never awaited, so a rejection here would surface as an
|
|
94
|
+
// unhandled rejection and take the process down
|
|
95
|
+
try {
|
|
96
|
+
const record = payload.connection;
|
|
97
|
+
payload.disclosures.forEach(item => record.metadata.add(`features-${item.type}`, { [item.id]: item.toJSON() }));
|
|
98
|
+
await agent.context.dependencyManager
|
|
99
|
+
.resolve(didcomm_1.DidCommConnectionRepository)
|
|
100
|
+
.update(agent.context, payload.connection);
|
|
101
|
+
const metadata = (_a = payload.disclosures) === null || _a === void 0 ? void 0 : _a.reduce((acc, item) => {
|
|
102
|
+
acc[item.id] = JSON.stringify(item.toJSON());
|
|
103
|
+
return acc;
|
|
104
|
+
}, {});
|
|
105
|
+
const body = new vs_agent_model_1.ConnectionStateUpdated({
|
|
106
|
+
connectionId: record.id,
|
|
107
|
+
invitationId: record.outOfBandId,
|
|
108
|
+
state: vs_agent_model_1.ExtendedDidExchangeState.Updated,
|
|
109
|
+
metadata,
|
|
110
|
+
});
|
|
111
|
+
(0, VsAgentEvents_1.emitVsAgentEvent)(agent, VsAgentEvents_1.VsAgentEventTypes.ConnectionStateUpdated, body);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
config.logger.error(`[connection-events] disclosure handler failed: ${error.message}`);
|
|
115
|
+
}
|
|
95
116
|
});
|
|
96
117
|
// Auto-accept connections that go to the public did
|
|
97
118
|
agent.events.on(didcomm_1.DidCommConnectionEventTypes.DidCommConnectionStateChanged, async (data) => {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
119
|
+
// an event listener is never awaited, so a rejection here would surface as an
|
|
120
|
+
// unhandled rejection and take the process down
|
|
121
|
+
try {
|
|
122
|
+
config.logger.debug(`Incoming connection event: ${data.payload.connectionRecord.state}`);
|
|
123
|
+
const outOfBandId = data.payload.connectionRecord.outOfBandId;
|
|
124
|
+
if (!outOfBandId)
|
|
125
|
+
return;
|
|
126
|
+
const oob = await agent.didcomm.oob.findById(outOfBandId);
|
|
127
|
+
if (agentPublicDids.includes(oob === null || oob === void 0 ? void 0 : oob.outOfBandInvitation.id) &&
|
|
128
|
+
data.payload.connectionRecord.state === didcomm_1.DidCommDidExchangeState.RequestReceived) {
|
|
129
|
+
config.logger.debug(`Incoming connection request for ${agent.did}`);
|
|
130
|
+
await agent.didcomm.connections.acceptRequest(data.payload.connectionRecord.id);
|
|
131
|
+
config.logger.debug(`Accepted request for ${agent.did}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
config.logger.error(`[connection-events] incoming connection handler failed: ${error.message}`);
|
|
108
136
|
}
|
|
109
137
|
});
|
|
110
138
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionEvents.js","sourceRoot":"","sources":["../../src/events/ConnectionEvents.ts"],"names":[],"mappings":";;;AAIA,+CAQ0B;AAC1B,gEAKoC;AAEpC,mDAAqE;AAE9D,MAAM,gBAAgB,GAAG,KAAK,EACnC,KAAmB,EACnB,MAA+E,EAC/E,EAAE;IACF,+EAA+E;IAC/E,MAAM,CAAC,oBAAoB,CAAC,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAA;IAClF,MAAM,eAAe,GAAG,oBAAoB,aAApB,oBAAoB,uBAApB,oBAAoB,CAAE,MAAM,CAAC,iBAAiB,CAAC,CAAA;IACvE,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAE/F,KAAK,CAAC,MAAM,CAAC,EAAE,CACb,qCAA2B,CAAC,6BAA6B,EACzD,KAAK,EAAE,EAAE,OAAO,EAAsC,EAAE,EAAE;QACxD,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"ConnectionEvents.js","sourceRoot":"","sources":["../../src/events/ConnectionEvents.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,13 +21,14 @@ const VsAgentWsOutboundTransport_1 = require("../transports/VsAgentWsOutboundTra
|
|
|
21
21
|
*/
|
|
22
22
|
function setupBaseDidComm(options) {
|
|
23
23
|
var _a;
|
|
24
|
+
const didcommVersions = (_a = options.didcommVersions) !== null && _a !== void 0 ? _a : ['v1', 'v2'];
|
|
24
25
|
return {
|
|
25
26
|
modules: {
|
|
26
27
|
didcomm: new didcomm_1.DidCommModule({
|
|
27
28
|
endpoints: options.endpoints,
|
|
28
|
-
didcommVersions
|
|
29
|
+
didcommVersions,
|
|
29
30
|
// BasicMessage protocols must be set separately, otherwise Credo rejects basicmessage/2.0.
|
|
30
|
-
basicMessages: { protocols:
|
|
31
|
+
basicMessages: { protocols: didcommVersions },
|
|
31
32
|
transports: {
|
|
32
33
|
outbound: [new didcomm_1.DidCommHttpOutboundTransport(), new VsAgentWsOutboundTransport_1.VsAgentWsOutboundTransport()],
|
|
33
34
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupBaseDidComm.js","sourceRoot":"","sources":["../../src/plugins/setupBaseDidComm.ts"],"names":[],"mappings":";;AAiDA,
|
|
1
|
+
{"version":3,"file":"setupBaseDidComm.js","sourceRoot":"","sources":["../../src/plugins/setupBaseDidComm.ts"],"names":[],"mappings":";;AAiDA,4CAqEC;AApHD,mDAM4B;AAC5B,2CAA4E;AAC5E,yCAAiE;AACjE,+CAQ0B;AAC1B,2CAA6F;AAC7F,oEAAyD;AACzD,sEAA2D;AAC3D,oFAAoG;AACpG,yEAAmE;AAGnE,8EAA0E;AAC1E,sEAAmE;AACnE,sEAAkE;AAClE,4DAAwD;AACxD,yFAAqF;AAcrF;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,OAAiC;;IAChE,MAAM,eAAe,GAAG,MAAA,OAAO,CAAC,eAAe,mCAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC/D,OAAO;QACL,OAAO,EAAE;YACP,OAAO,EAAE,IAAI,uBAAa,CAAC;gBACzB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,eAAe;gBACf,2FAA2F;gBAC3F,aAAa,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE;gBAC7C,UAAU,EAAE;oBACV,QAAQ,EAAE,CAAC,IAAI,sCAA4B,EAAE,EAAE,IAAI,uDAA0B,EAAE,CAAC;iBACjF;gBACD,WAAW,EAAE;oBACX,qBAAqB,EAAE,IAAI;oBAC3B,kCAAkC,EAAE,IAAI;iBACzC;gBACD,WAAW,EAAE;oBACX,qBAAqB,EAAE,qCAA2B,CAAC,eAAe;oBAClE,mBAAmB,EAAE;wBACnB,IAAI,qCAA2B,CAAC;4BAC9B,iBAAiB,EAAE;gCACjB,IAAI,oDAAwC,EAAE;gCAC9C,IAAI,mDAAuC,EAAE;gCAC7C,IAAI,8CAAoC,EAAE;6BAC3C;yBACF,CAAC;qBACH;iBACF;gBACD,MAAM,EAAE;oBACN,gBAAgB,EAAE,gCAAsB,CAAC,eAAe;oBACxD,cAAc,EAAE;wBACd,IAAI,gCAAsB,CAAC;4BACzB,YAAY,EAAE;gCACZ,IAAI,+CAAmC,EAAE;gCACzC,IAAI,8CAAkC,EAAE;6BACzC;yBACF,CAAC;qBACH;iBACF;aACF,CAAC;YACF,KAAK,EAAE,IAAI,mBAAW,CAAC;gBACrB,KAAK,EAAL,oBAAK;gBACL,KAAK,EAAE,OAAO,CAAC,YAAY;aAC5B,CAAC;YACF,SAAS,EAAE,IAAI,2BAAe,CAAC;gBAC7B,SAAS,EAAT,4BAAS;gBACT,gBAAgB,EAAE,IAAI,2CAAoB,CAAC;oBACzC,kBAAkB,EAAE,GAAG,OAAO,CAAC,gBAAgB,qBAAqB;iBACrE,CAAC;gBACF,UAAU,EAAE;oBACV,IAAI,mDAAuB,CAAC;wBAC1B,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;qBAC3E,CAAC;oBACF,IAAI,8BAAsB,EAAE;iBAC7B;aACF,CAAC;YACF,IAAI,EAAE,IAAI,iBAAU,CAAC;gBACnB,SAAS,EAAE;oBACT,IAAI,2CAAoB,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBACxE,IAAI,wBAAgB,EAAE;iBACvB;gBACD,UAAU,EAAE,CAAC,IAAI,iCAAe,EAAE,EAAE,IAAI,yBAAiB,EAAE,CAAC;aAC7D,CAAC;YACF,cAAc,EAAE,IAAI,2BAAoB,CAAC;gBACvC,cAAc,EAAE,4CAAqB;aACtC,CAAC;YACF,MAAM,EAAE,IAAI,uCAAY,mBAAM,OAAO,CAAC,MAAM,EAAG;SAChD;KACF,CAAA;AACH,CAAC"}
|
|
@@ -3,7 +3,7 @@ import { DidCommConnectionRecord, DidCommEncryptedMessage, DidCommInboundTranspo
|
|
|
3
3
|
import WebSocket, { Server } from 'ws';
|
|
4
4
|
export declare class VsAgentWsInboundTransport implements DidCommInboundTransport {
|
|
5
5
|
private socketServer;
|
|
6
|
-
private logger
|
|
6
|
+
private logger?;
|
|
7
7
|
private socketIds;
|
|
8
8
|
constructor({ server, port, }: {
|
|
9
9
|
server: Server;
|
|
@@ -46,35 +46,37 @@ class VsAgentWsInboundTransport {
|
|
|
46
46
|
async start(agentContext) {
|
|
47
47
|
const transportService = agentContext.dependencyManager.resolve(didcomm_1.DidCommTransportService);
|
|
48
48
|
const didcomm = agentContext.dependencyManager.resolve(didcomm_1.DidCommApi);
|
|
49
|
-
|
|
50
|
-
this.logger
|
|
49
|
+
const logger = agentContext.config.logger;
|
|
50
|
+
this.logger = logger;
|
|
51
|
+
logger.debug('VS Agent Ws Inbound transport start');
|
|
51
52
|
const wsEndpoint = didcomm.config.endpoints.find(e => e.startsWith('ws'));
|
|
52
|
-
|
|
53
|
+
logger.debug(`Starting WS inbound transport`, {
|
|
53
54
|
endpoint: wsEndpoint,
|
|
54
55
|
});
|
|
55
56
|
this.socketServer.on('connection', (socket) => {
|
|
56
57
|
const socketId = core_1.utils.uuid();
|
|
57
|
-
|
|
58
|
+
logger.debug('Socket connected.');
|
|
58
59
|
socket.isAlive = true;
|
|
59
60
|
socket.lastActivity = new Date();
|
|
60
61
|
if (!this.socketIds[socketId]) {
|
|
61
|
-
|
|
62
|
+
logger.debug(`Saving new socket with id ${socketId}.`);
|
|
62
63
|
this.socketIds[socketId] = socket;
|
|
63
|
-
const session = new WebSocketTransportSession(socketId, socket,
|
|
64
|
+
const session = new WebSocketTransportSession(socketId, socket, logger);
|
|
64
65
|
this.listenOnWebSocketMessages(agentContext, socket, session);
|
|
65
66
|
socket.on('close', () => {
|
|
66
|
-
|
|
67
|
+
logger.debug('Socket closed.');
|
|
67
68
|
transportService.removeSession(session);
|
|
68
69
|
});
|
|
69
70
|
}
|
|
70
71
|
else {
|
|
71
|
-
|
|
72
|
+
logger.debug(`Socket with id ${socketId} already exists.`);
|
|
72
73
|
}
|
|
73
74
|
});
|
|
74
75
|
this.startIdleSocketTimer(60000);
|
|
75
76
|
}
|
|
76
77
|
async stop() {
|
|
77
|
-
|
|
78
|
+
var _a;
|
|
79
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Closing WebSocket Server');
|
|
78
80
|
return new Promise((resolve, reject) => {
|
|
79
81
|
this.socketServer.close(error => {
|
|
80
82
|
if (error) {
|
|
@@ -85,15 +87,17 @@ class VsAgentWsInboundTransport {
|
|
|
85
87
|
});
|
|
86
88
|
}
|
|
87
89
|
getServer() {
|
|
88
|
-
|
|
90
|
+
var _a;
|
|
91
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Get WebSocket Server');
|
|
89
92
|
return this.socketServer;
|
|
90
93
|
}
|
|
91
94
|
startIdleSocketTimer(interval) {
|
|
92
95
|
setInterval(() => {
|
|
93
96
|
const currentDate = new Date();
|
|
94
97
|
this.socketServer.clients.forEach(item => {
|
|
98
|
+
var _a;
|
|
95
99
|
if (currentDate.valueOf() - item.lastActivity.valueOf() > interval) {
|
|
96
|
-
this.logger.debug('Client session closed by inactivity');
|
|
100
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Client session closed by inactivity');
|
|
97
101
|
item.close();
|
|
98
102
|
}
|
|
99
103
|
});
|
|
@@ -101,19 +105,21 @@ class VsAgentWsInboundTransport {
|
|
|
101
105
|
}
|
|
102
106
|
listenOnWebSocketMessages(agentContext, socket, session) {
|
|
103
107
|
socket.on('pong', () => {
|
|
104
|
-
|
|
108
|
+
var _a;
|
|
109
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('Pong received');
|
|
105
110
|
socket.isAlive = true;
|
|
106
111
|
});
|
|
107
112
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
108
113
|
socket.addEventListener('message', async (event) => {
|
|
109
|
-
|
|
114
|
+
var _a, _b;
|
|
115
|
+
(_a = this.logger) === null || _a === void 0 ? void 0 : _a.debug('WebSocket message event received.', { url: event.target.url, data: event.data });
|
|
110
116
|
socket.lastActivity = new Date();
|
|
111
117
|
try {
|
|
112
118
|
const messageReceiver = agentContext.dependencyManager.resolve(didcomm_1.DidCommMessageReceiver);
|
|
113
119
|
await messageReceiver.receiveMessage(JSON.parse(event.data), { session });
|
|
114
120
|
}
|
|
115
121
|
catch (error) {
|
|
116
|
-
this.logger.error(
|
|
122
|
+
(_b = this.logger) === null || _b === void 0 ? void 0 : _b.error(`Error processing inbound message: ${error instanceof Error ? error.message : String(error)}`, { error });
|
|
117
123
|
}
|
|
118
124
|
});
|
|
119
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VsAgentWsInboundTransport.js","sourceRoot":"","sources":["../../src/transports/VsAgentWsInboundTransport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAwE;AACxE,+CAQ0B;AAC1B,yCAAsC;AAQtC,MAAa,yBAAyB;
|
|
1
|
+
{"version":3,"file":"VsAgentWsInboundTransport.js","sourceRoot":"","sources":["../../src/transports/VsAgentWsInboundTransport.ts"],"names":[],"mappings":"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"}
|
package/build/utils/agent.d.ts
CHANGED
|
@@ -17,5 +17,20 @@ export declare function createInvitation(options: {
|
|
|
17
17
|
}): Promise<{
|
|
18
18
|
url: string;
|
|
19
19
|
}>;
|
|
20
|
+
/**
|
|
21
|
+
* Connects to a peer that publishes a public DID, and reuses the connection that the
|
|
22
|
+
* agent already has to that peer.
|
|
23
|
+
*
|
|
24
|
+
* The agent must keep one connection record only for each peer. A second record for the
|
|
25
|
+
* same pair of DIDs makes the `findByDids` lookup of the message receiver throw
|
|
26
|
+
* `RecordDuplicateError`, and the agent then fails to process every inbound message from
|
|
27
|
+
* that peer. To find the existing record, the agent reads the `publicDid` tag that it
|
|
28
|
+
* sets on each connection to a peer that publishes a public DID.
|
|
29
|
+
*
|
|
30
|
+
* @param agent the local agent
|
|
31
|
+
* @param peerPublicDid the public DID of the peer
|
|
32
|
+
* @returns the id of a ready connection record
|
|
33
|
+
*/
|
|
34
|
+
export declare function connectToPublicDid(agent: VsAgent, peerPublicDid: string): Promise<string>;
|
|
20
35
|
export declare function getRecordId(agent: VsAgent, id: string): Promise<string>;
|
|
21
36
|
export declare function getWebDid(agent: VsAgent): Promise<string | undefined>;
|
package/build/utils/agent.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createInvitation = createInvitation;
|
|
4
|
+
exports.connectToPublicDid = connectToPublicDid;
|
|
4
5
|
exports.getRecordId = getRecordId;
|
|
5
6
|
exports.getWebDid = getWebDid;
|
|
6
7
|
const core_1 = require("@credo-ts/core");
|
|
@@ -16,14 +17,14 @@ async function createInvitation(options) {
|
|
|
16
17
|
const { agent, messages, useLegacyDid, invitationBaseUrl, imageUrl, didCommVersion } = options;
|
|
17
18
|
// Use legacy did:web in case agent's did is webvh and using legacy did
|
|
18
19
|
const ourDid = agent.did && (0, core_1.parseDid)(agent.did).method === 'webvh' && useLegacyDid
|
|
19
|
-
? `did:web:${(0, core_1.parseDid)(agent.did).id.split(':')
|
|
20
|
+
? `did:web:${(0, core_1.parseDid)(agent.did).id.split(':').slice(1).join(':')}`
|
|
20
21
|
: agent.did;
|
|
21
|
-
const effectiveVersion = didCommVersion !== null && didCommVersion !== void 0 ? didCommVersion :
|
|
22
|
+
const effectiveVersion = didCommVersion !== null && didCommVersion !== void 0 ? didCommVersion : 'v2';
|
|
22
23
|
const isV2 = effectiveVersion === 'v2';
|
|
23
24
|
if (!agent.didcomm.config.didcommVersions.includes(effectiveVersion)) {
|
|
24
25
|
throw new Error(`Cannot create ${effectiveVersion} invitation: agent is configured with ` +
|
|
25
26
|
`didcommVersions: [${agent.didcomm.config.didcommVersions.join(', ')}]. ` +
|
|
26
|
-
`Add "${effectiveVersion}" to
|
|
27
|
+
`Add "${effectiveVersion}" to the agent's didcommVersions configuration.`);
|
|
27
28
|
}
|
|
28
29
|
const outOfBandInvitation = (await agent.didcomm.oob.createInvitation(Object.assign({ label: agent.label, multiUseInvitation: !messages, imageUrl,
|
|
29
30
|
messages, didCommVersion: effectiveVersion }, (isV2
|
|
@@ -38,6 +39,54 @@ async function createInvitation(options) {
|
|
|
38
39
|
}),
|
|
39
40
|
};
|
|
40
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Connects to a peer that publishes a public DID, and reuses the connection that the
|
|
44
|
+
* agent already has to that peer.
|
|
45
|
+
*
|
|
46
|
+
* The agent must keep one connection record only for each peer. A second record for the
|
|
47
|
+
* same pair of DIDs makes the `findByDids` lookup of the message receiver throw
|
|
48
|
+
* `RecordDuplicateError`, and the agent then fails to process every inbound message from
|
|
49
|
+
* that peer. To find the existing record, the agent reads the `publicDid` tag that it
|
|
50
|
+
* sets on each connection to a peer that publishes a public DID.
|
|
51
|
+
*
|
|
52
|
+
* @param agent the local agent
|
|
53
|
+
* @param peerPublicDid the public DID of the peer
|
|
54
|
+
* @returns the id of a ready connection record
|
|
55
|
+
*/
|
|
56
|
+
async function connectToPublicDid(agent, peerPublicDid) {
|
|
57
|
+
if (!agent.did)
|
|
58
|
+
throw new Error('Agent has no public DID');
|
|
59
|
+
const [existing] = await agent.didcomm.connections.findAllByQuery({
|
|
60
|
+
publicDid: peerPublicDid,
|
|
61
|
+
});
|
|
62
|
+
if (existing)
|
|
63
|
+
return (await agent.didcomm.connections.returnWhenIsConnected(existing.id)).id;
|
|
64
|
+
const { connectionRecord } = await agent.didcomm.oob.receiveImplicitInvitation({
|
|
65
|
+
did: peerPublicDid,
|
|
66
|
+
ourDid: agent.did,
|
|
67
|
+
label: agent.label,
|
|
68
|
+
didCommVersion: 'v2',
|
|
69
|
+
});
|
|
70
|
+
if (!connectionRecord)
|
|
71
|
+
throw new Error(`Failed to establish a DIDComm connection to ${peerPublicDid}`);
|
|
72
|
+
try {
|
|
73
|
+
// Tag the record with the public DID of the peer, to find it on the next call.
|
|
74
|
+
connectionRecord.setTag('publicDid', peerPublicDid);
|
|
75
|
+
await agent.context.resolve(didcomm_1.DidCommConnectionRepository).update(agent.context, connectionRecord);
|
|
76
|
+
const ready = await agent.didcomm.connections.returnWhenIsConnected(connectionRecord.id);
|
|
77
|
+
return ready.id;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
// Delete the incomplete record. If it stays, the next call reuses a connection that
|
|
81
|
+
// the peer never completed, and a later retry adds a duplicate record for the pair.
|
|
82
|
+
await agent.didcomm.connections.deleteById(connectionRecord.id).catch(deleteError => {
|
|
83
|
+
agent.config.logger.warn(`Failed to delete the incomplete connection ${connectionRecord.id}`, {
|
|
84
|
+
error: deleteError,
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
41
90
|
async function getRecordId(agent, id) {
|
|
42
91
|
var _a;
|
|
43
92
|
const record = await agent.genericRecords.findById(id);
|
|
@@ -49,7 +98,7 @@ async function getWebDid(agent) {
|
|
|
49
98
|
if (parsedDid.method === 'web')
|
|
50
99
|
return agent.did;
|
|
51
100
|
if (parsedDid.method === 'webvh')
|
|
52
|
-
return `did:web:${parsedDid.id.split(':')
|
|
101
|
+
return `did:web:${parsedDid.id.split(':').slice(1).join(':')}`;
|
|
53
102
|
}
|
|
54
103
|
}
|
|
55
104
|
//# sourceMappingURL=agent.js.map
|
package/build/utils/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Logger } from '@credo-ts/core';
|
|
2
|
+
import { VsAgent } from '../agent/VsAgent';
|
|
3
|
+
/**
|
|
4
|
+
* Waits until this agent's own DID document is fetchable at its public endpoint, so a peer
|
|
5
|
+
* can resolve it as soon as we reach out. Checks the same file a peer's resolver would fetch:
|
|
6
|
+
* did.jsonl for did:webvh, did.json for did:web. Logs and returns if the deadline passes,
|
|
7
|
+
* rather than blocking the caller forever on a misconfigured deployment.
|
|
8
|
+
*/
|
|
9
|
+
export declare function waitUntilOwnDidIsPubliclyResolvable(agent: VsAgent, logger: Logger): Promise<void>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.waitUntilOwnDidIsPubliclyResolvable = waitUntilOwnDidIsPubliclyResolvable;
|
|
4
|
+
// On a fresh deployment, the ingress route to this agent's own public endpoint
|
|
5
|
+
// can lag a few seconds behind the process becoming ready (e.g. a k8s Service
|
|
6
|
+
// has not finished propagating the new pod IP yet). A peer resolves our DID as
|
|
7
|
+
// part of processing any message we send it, so we wait for our own DID
|
|
8
|
+
// document to be publicly fetchable before reaching out to one.
|
|
9
|
+
const OWN_DID_READY_TIMEOUT_MS = 60000;
|
|
10
|
+
const OWN_DID_READY_POLL_INTERVAL_MS = 2000;
|
|
11
|
+
/**
|
|
12
|
+
* Waits until this agent's own DID document is fetchable at its public endpoint, so a peer
|
|
13
|
+
* can resolve it as soon as we reach out. Checks the same file a peer's resolver would fetch:
|
|
14
|
+
* did.jsonl for did:webvh, did.json for did:web. Logs and returns if the deadline passes,
|
|
15
|
+
* rather than blocking the caller forever on a misconfigured deployment.
|
|
16
|
+
*/
|
|
17
|
+
async function waitUntilOwnDidIsPubliclyResolvable(agent, logger) {
|
|
18
|
+
const did = agent.did;
|
|
19
|
+
if (!did || !agent.publicApiBaseUrl)
|
|
20
|
+
return;
|
|
21
|
+
const documentFile = did.startsWith('did:web:') ? 'did.json' : 'did.jsonl';
|
|
22
|
+
const baseUrl = agent.publicApiBaseUrl.replace(/\/+$/, '');
|
|
23
|
+
// A path-based DID location serves its document at <base>/did.json(l), not under /.well-known
|
|
24
|
+
const hasPath = new URL(baseUrl).pathname !== '/';
|
|
25
|
+
const url = hasPath ? `${baseUrl}/${documentFile}` : `${baseUrl}/.well-known/${documentFile}`;
|
|
26
|
+
const deadline = Date.now() + OWN_DID_READY_TIMEOUT_MS;
|
|
27
|
+
let lastStatus = 'unreachable';
|
|
28
|
+
while (Date.now() < deadline) {
|
|
29
|
+
try {
|
|
30
|
+
const response = await fetch(url);
|
|
31
|
+
if (response.ok)
|
|
32
|
+
return;
|
|
33
|
+
lastStatus = response.status;
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
lastStatus = error.message;
|
|
37
|
+
}
|
|
38
|
+
await new Promise(resolve => setTimeout(resolve, OWN_DID_READY_POLL_INTERVAL_MS));
|
|
39
|
+
}
|
|
40
|
+
logger.warn(`[DidReadiness] own DID document at ${url} was not publicly resolvable after ${OWN_DID_READY_TIMEOUT_MS}ms (last: ${lastStatus}); proceeding anyway`);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=didReadiness.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"didReadiness.js","sourceRoot":"","sources":["../../src/utils/didReadiness.ts"],"names":[],"mappings":";;AAkBA,kFAyBC;AAvCD,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,wEAAwE;AACxE,gEAAgE;AAChE,MAAM,wBAAwB,GAAG,KAAM,CAAA;AACvC,MAAM,8BAA8B,GAAG,IAAK,CAAA;AAE5C;;;;;GAKG;AACI,KAAK,UAAU,mCAAmC,CAAC,KAAc,EAAE,MAAc;IACtF,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAA;IACrB,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB;QAAE,OAAM;IAE3C,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAA;IAC1E,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC1D,8FAA8F;IAC9F,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,GAAG,CAAA;IACjD,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,gBAAgB,YAAY,EAAE,CAAA;IAE7F,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,wBAAwB,CAAA;IACtD,IAAI,UAAU,GAAoB,aAAa,CAAA;IAC/C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;YACjC,IAAI,QAAQ,CAAC,EAAE;gBAAE,OAAM;YACvB,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAA;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,GAAI,KAAe,CAAC,OAAO,CAAA;QACvC,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC,CAAA;IACnF,CAAC;IACD,MAAM,CAAC,IAAI,CACT,sCAAsC,GAAG,sCAAsC,wBAAwB,aAAa,UAAU,sBAAsB,CACrJ,CAAA;AACH,CAAC"}
|