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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +7 -26
  2. package/build/agent/VsAgent.d.ts +2 -0
  3. package/build/agent/VsAgent.js.map +1 -1
  4. package/build/blockchain/IndexerWebSocketService.d.ts +0 -4
  5. package/build/blockchain/IndexerWebSocketService.js +30 -30
  6. package/build/blockchain/IndexerWebSocketService.js.map +1 -1
  7. package/build/blockchain/VeranaChainService.d.ts +11 -17
  8. package/build/blockchain/VeranaChainService.js +101 -65
  9. package/build/blockchain/VeranaChainService.js.map +1 -1
  10. package/build/blockchain/VeranaHelpers.js +2 -2
  11. package/build/blockchain/VeranaHelpers.js.map +1 -1
  12. package/build/blockchain/VeranaIndexerService.d.ts +3 -4
  13. package/build/blockchain/VeranaIndexerService.js +8 -19
  14. package/build/blockchain/VeranaIndexerService.js.map +1 -1
  15. package/build/blockchain/handlers/IndexerHandlerRegistry.d.ts +1 -0
  16. package/build/blockchain/handlers/IndexerHandlerRegistry.js.map +1 -1
  17. package/build/blockchain/handlers/defaultHandlers.js +37 -32
  18. package/build/blockchain/handlers/defaultHandlers.js.map +1 -1
  19. package/build/blockchain/handlers/stateMutations.d.ts +12 -4
  20. package/build/blockchain/handlers/stateMutations.js +103 -28
  21. package/build/blockchain/handlers/stateMutations.js.map +1 -1
  22. package/build/blockchain/types.d.ts +188 -49
  23. package/build/blockchain/types.js +8 -1
  24. package/build/blockchain/types.js.map +1 -1
  25. package/build/credentials/FullTailsFileService.d.ts +1 -1
  26. package/build/credentials/FullTailsFileService.js +6 -10
  27. package/build/credentials/FullTailsFileService.js.map +1 -1
  28. package/build/index.d.ts +2 -3
  29. package/build/index.js +3 -3
  30. package/build/index.js.map +1 -1
  31. package/build/plugins/setupBaseDidComm.d.ts +3 -1
  32. package/build/plugins/setupBaseDidComm.js +3 -1
  33. package/build/plugins/setupBaseDidComm.js.map +1 -1
  34. package/build/types.d.ts +1 -0
  35. package/build/types.js +2 -1
  36. package/build/types.js.map +1 -1
  37. package/build/vtFlow/VtFlowOrchestrator.d.ts +37 -0
  38. package/build/vtFlow/VtFlowOrchestrator.js +244 -0
  39. package/build/vtFlow/VtFlowOrchestrator.js.map +1 -0
  40. package/build/vtFlow/credentialDigest.d.ts +3 -0
  41. package/build/vtFlow/credentialDigest.js +23 -0
  42. package/build/vtFlow/credentialDigest.js.map +1 -0
  43. package/build/vtFlow/index.d.ts +1 -0
  44. package/build/vtFlow/index.js +18 -0
  45. package/build/vtFlow/index.js.map +1 -0
  46. package/package.json +14 -11
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VtFlowOrchestrator = void 0;
4
+ const core_1 = require("@credo-ts/core");
5
+ const didcomm_1 = require("@credo-ts/didcomm");
6
+ const credo_ts_didcomm_vt_flow_1 = require("@verana-labs/credo-ts-didcomm-vt-flow");
7
+ const types_1 = require("../types");
8
+ const utils_1 = require("../utils");
9
+ const credentialDigest_1 = require("./credentialDigest");
10
+ class VtFlowOrchestrator {
11
+ constructor(agent, options = {}) {
12
+ this.agent = agent;
13
+ this.options = options;
14
+ }
15
+ async startOnboardingProcess(input) {
16
+ var _a;
17
+ const chain = this.requireChain();
18
+ if (!this.agent.did)
19
+ throw new Error('Agent has no public DID');
20
+ const holderParticipant = await chain.getParticipant(input.applicantParticipantId);
21
+ if (!holderParticipant) {
22
+ throw new Error(`Applicant participant ${input.applicantParticipantId} not found on chain`);
23
+ }
24
+ if (holderParticipant.did !== this.agent.did) {
25
+ throw new Error(`Applicant participant ${input.applicantParticipantId} does not belong to this agent`);
26
+ }
27
+ if (holderParticipant.role !== types_1.ISSUER_PARTICIPANT_TYPE) {
28
+ throw new Error(`Participant ${input.applicantParticipantId} is not an ISSUER participant`);
29
+ }
30
+ if (!holderParticipant.validatorParticipantId) {
31
+ throw new Error(`Applicant participant ${input.applicantParticipantId} has no validator_participant_id`);
32
+ }
33
+ const validatorParticipant = await chain.getParticipant(Number(holderParticipant.validatorParticipantId));
34
+ if (!(validatorParticipant === null || validatorParticipant === void 0 ? void 0 : validatorParticipant.did)) {
35
+ throw new Error(`Validator participant ${holderParticipant.validatorParticipantId} not resolvable`);
36
+ }
37
+ if (validatorParticipant.revoked || validatorParticipant.slashed) {
38
+ throw new Error(`Validator participant ${validatorParticipant.id} is not active`);
39
+ }
40
+ const { connectionRecord } = await this.agent.didcomm.oob.receiveImplicitInvitation({
41
+ did: validatorParticipant.did,
42
+ label: this.agent.label,
43
+ handshakeProtocols: [didcomm_1.DidCommHandshakeProtocol.Connections],
44
+ });
45
+ if (!connectionRecord)
46
+ throw new Error('Failed to establish DIDComm connection to validator');
47
+ const ready = await this.agent.didcomm.connections.returnWhenIsConnected(connectionRecord.id);
48
+ return this.resolveVtFlowApi().sendOnboardingRequest({
49
+ connectionId: ready.id,
50
+ participantSessionId: (_a = input.participantSessionId) !== null && _a !== void 0 ? _a : core_1.utils.uuid(),
51
+ participantId: String(holderParticipant.id),
52
+ agentParticipantId: '0',
53
+ walletAgentParticipantId: '0',
54
+ claims: input.claims,
55
+ });
56
+ }
57
+ async validateAndOfferCredential(input) {
58
+ var _a, _b, _c, _d, _e, _f;
59
+ const chain = this.requireChain();
60
+ if (!this.agent.did)
61
+ throw new Error('Agent has no public DID');
62
+ const vtFlowApi = this.resolveVtFlowApi();
63
+ const record = await vtFlowApi.findById(input.vtFlowRecordId);
64
+ if (!record)
65
+ throw new Error(`vt-flow record ${input.vtFlowRecordId} not found`);
66
+ if (record.role !== credo_ts_didcomm_vt_flow_1.VtFlowRole.Validator)
67
+ throw new Error('Record is not validator-side');
68
+ if (record.variant !== credo_ts_didcomm_vt_flow_1.VtFlowVariant.OnboardingProcess) {
69
+ throw new Error(`Record variant is '${record.variant}', expected OnboardingProcess`);
70
+ }
71
+ if (record.state !== credo_ts_didcomm_vt_flow_1.VtFlowState.AwaitingOr) {
72
+ throw new Error(`Record state is '${record.state}', expected '${credo_ts_didcomm_vt_flow_1.VtFlowState.AwaitingOr}'`);
73
+ }
74
+ if (!record.participantId)
75
+ throw new Error('Record has no participantId');
76
+ const holderParticipantId = Number(record.participantId);
77
+ const holderParticipant = await chain.getParticipant(holderParticipantId);
78
+ if (!holderParticipant)
79
+ throw new Error(`Holder participant ${holderParticipantId} not found on chain`);
80
+ if (!holderParticipant.did)
81
+ throw new Error('Holder participant has no DID');
82
+ const didRecords = await this.agent.dids.getCreatedDids({ did: this.agent.did });
83
+ const didRecord = didRecords[0];
84
+ if (!didRecord)
85
+ throw new Error('Agent DID record not found');
86
+ const schemaRef = `vpr:verana:${chain.getChainId}/cs/v1/js/${input.credentialSchemaId}`;
87
+ const { data } = await (0, utils_1.findMetadataEntry)(didRecord, '_vt/jsc', '', schemaRef);
88
+ const claims = ((_a = record.claims) !== null && _a !== void 0 ? _a : {});
89
+ const unsignedCredential = (0, utils_1.createCredential)({
90
+ id: `${this.agent.did}#${core_1.utils.uuid()}`,
91
+ type: (_b = input.credentialType) !== null && _b !== void 0 ? _b : ['VerifiableCredential', 'VerifiableTrustCredential'],
92
+ issuer: this.agent.did,
93
+ credentialSubject: { id: holderParticipant.did, claims },
94
+ });
95
+ if (input.credentialContext)
96
+ unsignedCredential.context = input.credentialContext;
97
+ unsignedCredential.credentialSchema = {
98
+ id: (_d = (_c = data.verifiableCredential) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.id,
99
+ type: 'JsonSchemaCredential',
100
+ };
101
+ const unsignedCredentialJson = core_1.JsonTransformer.toJSON(unsignedCredential);
102
+ const digest = (0, credentialDigest_1.credentialContentDigest)(unsignedCredentialJson);
103
+ await chain.setParticipantOPToValidated({
104
+ id: holderParticipantId,
105
+ opSummaryDigest: digest,
106
+ corporation: holderParticipant.corporation,
107
+ });
108
+ await chain.createOrUpdateParticipantSession({
109
+ id: record.participantSessionId,
110
+ issuerParticipantId: holderParticipantId,
111
+ agentParticipantId: (_e = input.agentParticipantId) !== null && _e !== void 0 ? _e : 0,
112
+ walletAgentParticipantId: (_f = input.walletAgentParticipantId) !== null && _f !== void 0 ? _f : 0,
113
+ digest,
114
+ });
115
+ await vtFlowApi.acceptOnboardingRequest(record.id);
116
+ await vtFlowApi.markValidated(record.id);
117
+ const { record: offered } = await vtFlowApi.offerCredentialForSession({
118
+ vtFlowRecordId: record.id,
119
+ credentialFormats: {
120
+ jsonld: {
121
+ credential: unsignedCredentialJson,
122
+ options: { proofType: 'Ed25519Signature2020', proofPurpose: 'assertionMethod' },
123
+ },
124
+ },
125
+ });
126
+ return offered;
127
+ }
128
+ async acceptCredential(input) {
129
+ const vtFlowApi = this.resolveVtFlowApi();
130
+ const record = await vtFlowApi.findById(input.vtFlowRecordId);
131
+ if (!record)
132
+ throw new Error(`vt-flow record ${input.vtFlowRecordId} not found`);
133
+ if (record.role !== credo_ts_didcomm_vt_flow_1.VtFlowRole.Applicant)
134
+ throw new Error('Record is not applicant-side');
135
+ if (record.state !== credo_ts_didcomm_vt_flow_1.VtFlowState.CredOffered) {
136
+ throw new Error(`Record state is '${record.state}', expected '${credo_ts_didcomm_vt_flow_1.VtFlowState.CredOffered}'`);
137
+ }
138
+ await this.verifyOfferedCredential(input.vtFlowRecordId);
139
+ return vtFlowApi.acceptReceivedCredential(input.vtFlowRecordId);
140
+ }
141
+ async verifyOfferedCredential(vtFlowRecordId) {
142
+ var _a;
143
+ const vtFlowApi = this.resolveVtFlowApi();
144
+ const record = await vtFlowApi.findById(vtFlowRecordId);
145
+ if (!record)
146
+ throw new Error(`vt-flow record ${vtFlowRecordId} not found`);
147
+ if (record.role !== credo_ts_didcomm_vt_flow_1.VtFlowRole.Applicant)
148
+ throw new Error('Record is not applicant-side');
149
+ if (!record.participantId)
150
+ throw new Error('Record has no participantId');
151
+ if (!record.credentialExchangeRecordId) {
152
+ throw new Error('Record has no credentialExchangeRecordId; nothing to verify');
153
+ }
154
+ const { validatorParticipantActive, opSummaryDigest } = await this.resolveHolderAndValidatorState(Number(record.participantId));
155
+ if (!validatorParticipantActive)
156
+ throw new Error('Validator participant is not active');
157
+ if (!opSummaryDigest) {
158
+ throw new Error('No credential digest recorded in the on-chain ParticipantSession');
159
+ }
160
+ const formatData = await this.agent.didcomm.credentials.getFormatData(record.credentialExchangeRecordId);
161
+ const credentialJson = (_a = formatData.credential) === null || _a === void 0 ? void 0 : _a.jsonld;
162
+ if (!credentialJson)
163
+ throw new Error('Offered credential has no JSON-LD body to verify');
164
+ const computed = (0, credentialDigest_1.credentialContentDigest)(credentialJson);
165
+ if (computed !== opSummaryDigest) {
166
+ throw new Error(`Credential digest mismatch: computed=${computed} on-chain=${opSummaryDigest}`);
167
+ }
168
+ }
169
+ async resolveHolderAndValidatorState(holderParticipantId) {
170
+ const indexer = this.options.indexer;
171
+ if (indexer) {
172
+ const holder = await indexer.getParticipant(holderParticipantId);
173
+ if (!holder)
174
+ throw new Error(`Holder participant ${holderParticipantId} not found on indexer`);
175
+ if (!holder.validator_participant_id) {
176
+ throw new Error('Holder participant has no validator_participant_id');
177
+ }
178
+ const validator = await indexer.getParticipant(holder.validator_participant_id);
179
+ if (!validator) {
180
+ throw new Error(`Validator participant ${holder.validator_participant_id} not found on indexer`);
181
+ }
182
+ return {
183
+ validatorParticipantActive: !validator.revoked && !validator.slashed,
184
+ opSummaryDigest: holder.op_summary_digest,
185
+ };
186
+ }
187
+ const chain = this.requireChain();
188
+ const holder = await chain.getParticipant(holderParticipantId);
189
+ if (!holder)
190
+ throw new Error(`Holder participant ${holderParticipantId} not found on chain`);
191
+ if (!holder.validatorParticipantId)
192
+ throw new Error('Holder participant has no validator_participant_id');
193
+ const validator = await chain.getParticipant(Number(holder.validatorParticipantId));
194
+ if (!validator)
195
+ throw new Error(`Validator participant ${holder.validatorParticipantId} not found on chain`);
196
+ return {
197
+ validatorParticipantActive: !validator.revoked && !validator.slashed,
198
+ opSummaryDigest: holder.opSummaryDigest,
199
+ };
200
+ }
201
+ async publishCredentialAsLinkedVp(vtFlowRecordId) {
202
+ var _a, _b;
203
+ if (!this.options.publicApiBaseUrl) {
204
+ throw new Error('publicApiBaseUrl is required to publish a LinkedVerifiablePresentation');
205
+ }
206
+ const vtFlowApi = this.resolveVtFlowApi();
207
+ const record = await vtFlowApi.findById(vtFlowRecordId);
208
+ if (!record)
209
+ throw new Error(`vt-flow record ${vtFlowRecordId} not found`);
210
+ if (record.role !== credo_ts_didcomm_vt_flow_1.VtFlowRole.Applicant)
211
+ throw new Error('Record is not applicant-side');
212
+ if (!record.credentialExchangeRecordId) {
213
+ throw new Error(`vt-flow record ${vtFlowRecordId} has no credentialExchangeRecordId`);
214
+ }
215
+ const formatData = await this.agent.didcomm.credentials.getFormatData(record.credentialExchangeRecordId);
216
+ const jsonld = (_a = formatData.credential) === null || _a === void 0 ? void 0 : _a.jsonld;
217
+ if (!jsonld) {
218
+ throw new Error(`No jsonld credential in exchange ${record.credentialExchangeRecordId}`);
219
+ }
220
+ const schemaRef = (_b = jsonld.credentialSchema) === null || _b === void 0 ? void 0 : _b.id;
221
+ const schemaBaseId = schemaRef ? this.extractSchemaBaseId(schemaRef) : undefined;
222
+ if (!schemaBaseId) {
223
+ throw new Error(`Cannot publish Linked VP: credential has no extractable schema base id (credentialSchema.id=${schemaRef !== null && schemaRef !== void 0 ? schemaRef : 'undefined'})`);
224
+ }
225
+ const w3cCredential = core_1.JsonTransformer.fromJSON(jsonld, core_1.W3cJsonLdVerifiableCredential);
226
+ await (0, utils_1.createVtc)(this.agent, this.options.publicApiBaseUrl, schemaBaseId, w3cCredential);
227
+ }
228
+ extractSchemaBaseId(jscUrl) {
229
+ var _a;
230
+ const match = jscUrl.match(/schemas-([a-z0-9-]+?)-(?:jsc|c-vp)\.json/i);
231
+ return (_a = match === null || match === void 0 ? void 0 : match[1]) === null || _a === void 0 ? void 0 : _a.toLowerCase();
232
+ }
233
+ resolveVtFlowApi() {
234
+ return this.agent.dependencyManager.resolve(credo_ts_didcomm_vt_flow_1.VtFlowApi);
235
+ }
236
+ requireChain() {
237
+ if (!this.agent.veranaChain) {
238
+ throw new Error('Agent has no veranaChain configured');
239
+ }
240
+ return this.agent.veranaChain;
241
+ }
242
+ }
243
+ exports.VtFlowOrchestrator = VtFlowOrchestrator;
244
+ //# sourceMappingURL=VtFlowOrchestrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VtFlowOrchestrator.js","sourceRoot":"","sources":["../../src/vtFlow/VtFlowOrchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type JsonCredential } from '@credo-ts/didcomm';
2
+ export declare function canonicalJson(value: unknown): string;
3
+ export declare function credentialContentDigest(credential: JsonCredential): string;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canonicalJson = canonicalJson;
4
+ exports.credentialContentDigest = credentialContentDigest;
5
+ const utils_1 = require("../utils");
6
+ function canonicalJson(value) {
7
+ if (value === null || typeof value !== 'object')
8
+ return JSON.stringify(value);
9
+ if (Array.isArray(value))
10
+ return `[${value.map(canonicalJson).join(',')}]`;
11
+ const obj = value;
12
+ return `{${Object.keys(obj)
13
+ .sort()
14
+ .map(k => `${JSON.stringify(k)}:${canonicalJson(obj[k])}`)
15
+ .join(',')}}`;
16
+ }
17
+ // Excludes the proof so re-signing at issuance (new proof bytes) does not change the digest.
18
+ function credentialContentDigest(credential) {
19
+ const content = Object.assign({}, credential);
20
+ delete content.proof;
21
+ return (0, utils_1.generateDigestSRI)(canonicalJson(content));
22
+ }
23
+ //# sourceMappingURL=credentialDigest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentialDigest.js","sourceRoot":"","sources":["../../src/vtFlow/credentialDigest.ts"],"names":[],"mappings":";;AAIA,sCAQC;AAGD,0DAIC;AAjBD,oCAA4C;AAE5C,SAAgB,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC7E,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IAC1E,MAAM,GAAG,GAAG,KAAgC,CAAA;IAC5C,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SACxB,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;AACjB,CAAC;AAED,6FAA6F;AAC7F,SAAgB,uBAAuB,CAAC,UAA0B;IAChE,MAAM,OAAO,qBAAQ,UAAU,CAAE,CAAA;IACjC,OAAO,OAAO,CAAC,KAAK,CAAA;IACpB,OAAO,IAAA,yBAAiB,EAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAA;AAClD,CAAC"}
@@ -0,0 +1 @@
1
+ export * from './VtFlowOrchestrator';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./VtFlowOrchestrator"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vtFlow/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAoC"}
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "default": "./build/index.js"
10
10
  }
11
11
  },
12
- "version": "1.12.0-dev.1",
12
+ "version": "1.12.0-dev.3",
13
13
  "repository": {
14
14
  "type": "git",
15
15
  "url": "https://github.com/verana-labs/vs-agent"
@@ -26,14 +26,14 @@
26
26
  "@cosmjs/proto-signing": "^0.32.3",
27
27
  "@cosmjs/stargate": "^0.32.3",
28
28
  "@cosmjs/tendermint-rpc": "^0.32.4",
29
- "@credo-ts/anoncreds": "0.7.1-pr-2704-20260519192541",
30
- "@credo-ts/askar": "0.7.1-pr-2704-20260519192541",
31
- "@credo-ts/core": "0.7.1-pr-2704-20260519192541",
32
- "@credo-ts/didcomm": "0.7.1-pr-2704-20260519192541",
33
- "@credo-ts/webvh": "0.7.1-pr-2704-20260519192541",
29
+ "@credo-ts/anoncreds": "0.7.1-pr-2704-20260610194233",
30
+ "@credo-ts/askar": "0.7.1-pr-2704-20260610194233",
31
+ "@credo-ts/core": "0.7.1-pr-2704-20260610194233",
32
+ "@credo-ts/didcomm": "0.7.1-pr-2704-20260610194233",
33
+ "@credo-ts/webvh": "0.7.1-pr-2704-20260610194233",
34
34
  "@hyperledger/anoncreds-nodejs": "^0.4.0",
35
35
  "@openwallet-foundation/askar-nodejs": "^0.6.0",
36
- "@verana-labs/verana-types": "0.10.1-dev.11",
36
+ "@verana-labs/verana-types": "0.10.1-dev.16",
37
37
  "ajv": "^8.17.1",
38
38
  "ajv-formats": "^3.0.1",
39
39
  "axios": "^1.7.9",
@@ -41,13 +41,15 @@
41
41
  "didwebvh-ts": "^2.7.4",
42
42
  "express": "^4.18.1",
43
43
  "tsyringe": "4.8.0",
44
- "@verana-labs/vs-agent-model": "1.12.0-dev.1"
44
+ "@verana-labs/credo-ts-didcomm-vt-flow": "1.12.0-dev.3",
45
+ "@verana-labs/vs-agent-model": "1.12.0-dev.3"
45
46
  },
46
47
  "peerDependencies": {
47
- "@credo-ts/core": "0.7.1-pr-2704-20260519192541",
48
- "@credo-ts/node": "0.7.1-pr-2704-20260519192541"
48
+ "@credo-ts/core": "0.7.1-pr-2704-20260610194233",
49
+ "@credo-ts/node": "0.7.1-pr-2704-20260610194233"
49
50
  },
50
51
  "devDependencies": {
52
+ "testcontainers": "^12.0.3",
51
53
  "ts-node-dev": "^2.0.0"
52
54
  },
53
55
  "scripts": {
@@ -55,6 +57,7 @@
55
57
  "clean": "rimraf -rf ./build",
56
58
  "compile": "tsc -p tsconfig.build.json",
57
59
  "version": "pnpm version --allow-same-version",
58
- "test": "vitest"
60
+ "test": "vitest",
61
+ "test:e2e": "RUN_FLOW_E2E=1 vitest run tests/e2e"
59
62
  }
60
63
  }