@verana-labs/vs-agent-sdk 2.0.0-dev.8 → 2.0.0-dev.80

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 (182) hide show
  1. package/README.md +0 -2
  2. package/build/adminApi/AdminApiError.d.ts +28 -0
  3. package/build/adminApi/AdminApiError.js +60 -0
  4. package/build/adminApi/AdminApiError.js.map +1 -0
  5. package/build/adminApi/didcommModules.d.ts +2 -0
  6. package/build/adminApi/didcommModules.js +8 -0
  7. package/build/adminApi/didcommModules.js.map +1 -0
  8. package/build/adminApi/index.d.ts +4 -0
  9. package/build/adminApi/index.js +21 -0
  10. package/build/adminApi/index.js.map +1 -0
  11. package/build/adminApi/moduleEndpoint.d.ts +8 -0
  12. package/build/adminApi/moduleEndpoint.js +28 -0
  13. package/build/adminApi/moduleEndpoint.js.map +1 -0
  14. package/build/adminApi/pagination/PageDto.d.ts +7 -0
  15. package/build/adminApi/pagination/PageDto.js +50 -0
  16. package/build/adminApi/pagination/PageDto.js.map +1 -0
  17. package/build/adminApi/pagination/PaginationQueryDto.d.ts +11 -0
  18. package/build/adminApi/pagination/PaginationQueryDto.js +46 -0
  19. package/build/adminApi/pagination/PaginationQueryDto.js.map +1 -0
  20. package/build/adminApi/pagination/cursor.d.ts +28 -0
  21. package/build/adminApi/pagination/cursor.js +64 -0
  22. package/build/adminApi/pagination/cursor.js.map +1 -0
  23. package/build/adminApi/pagination/index.d.ts +4 -0
  24. package/build/adminApi/pagination/index.js +21 -0
  25. package/build/adminApi/pagination/index.js.map +1 -0
  26. package/build/adminApi/pagination/paginate.d.ts +27 -0
  27. package/build/adminApi/pagination/paginate.js +77 -0
  28. package/build/adminApi/pagination/paginate.js.map +1 -0
  29. package/build/agent/VsAgent.d.ts +22 -34
  30. package/build/agent/VsAgent.js +84 -205
  31. package/build/agent/VsAgent.js.map +1 -1
  32. package/build/agent/createVsAgent.d.ts +5 -6
  33. package/build/agent/createVsAgent.js +3 -5
  34. package/build/agent/createVsAgent.js.map +1 -1
  35. package/build/blockchain/AnonCredsTrustService.d.ts +62 -0
  36. package/build/blockchain/AnonCredsTrustService.js +256 -0
  37. package/build/blockchain/AnonCredsTrustService.js.map +1 -0
  38. package/build/blockchain/AuthorizationService.d.ts +5 -3
  39. package/build/blockchain/AuthorizationService.js +17 -29
  40. package/build/blockchain/AuthorizationService.js.map +1 -1
  41. package/build/blockchain/IndexerWebSocketService.d.ts +7 -1
  42. package/build/blockchain/IndexerWebSocketService.js +68 -36
  43. package/build/blockchain/IndexerWebSocketService.js.map +1 -1
  44. package/build/blockchain/VeranaChainService.d.ts +38 -27
  45. package/build/blockchain/VeranaChainService.js +169 -177
  46. package/build/blockchain/VeranaChainService.js.map +1 -1
  47. package/build/blockchain/VeranaIndexerService.d.ts +14 -1
  48. package/build/blockchain/VeranaIndexerService.js +122 -8
  49. package/build/blockchain/VeranaIndexerService.js.map +1 -1
  50. package/build/blockchain/feePreflight.d.ts +32 -0
  51. package/build/blockchain/feePreflight.js +89 -0
  52. package/build/blockchain/feePreflight.js.map +1 -0
  53. package/build/blockchain/handlers/authorizationHandlers.js +2 -2
  54. package/build/blockchain/handlers/authorizationHandlers.js.map +1 -1
  55. package/build/blockchain/handlers/defaultHandlers.js +6 -1
  56. package/build/blockchain/handlers/defaultHandlers.js.map +1 -1
  57. package/build/blockchain/handlers/index.d.ts +1 -0
  58. package/build/blockchain/handlers/index.js +1 -0
  59. package/build/blockchain/handlers/index.js.map +1 -1
  60. package/build/blockchain/handlers/selfIssuanceHandlers.d.ts +13 -0
  61. package/build/blockchain/handlers/selfIssuanceHandlers.js +76 -0
  62. package/build/blockchain/handlers/selfIssuanceHandlers.js.map +1 -0
  63. package/build/blockchain/handlers/stateMutations.d.ts +26 -3
  64. package/build/blockchain/handlers/stateMutations.js +317 -41
  65. package/build/blockchain/handlers/stateMutations.js.map +1 -1
  66. package/build/blockchain/index.d.ts +4 -0
  67. package/build/blockchain/index.js +4 -0
  68. package/build/blockchain/index.js.map +1 -1
  69. package/build/blockchain/indexerMappers.d.ts +3 -0
  70. package/build/blockchain/indexerMappers.js +53 -0
  71. package/build/blockchain/indexerMappers.js.map +1 -0
  72. package/build/blockchain/triggerResolver.d.ts +26 -0
  73. package/build/blockchain/triggerResolver.js +120 -0
  74. package/build/blockchain/triggerResolver.js.map +1 -0
  75. package/build/blockchain/types.d.ts +13 -70
  76. package/build/blockchain/types.js.map +1 -1
  77. package/build/bootstrap/EcsBootstrapService.d.ts +13 -3
  78. package/build/bootstrap/EcsBootstrapService.js +172 -94
  79. package/build/bootstrap/EcsBootstrapService.js.map +1 -1
  80. package/build/connections/ParentConnectionModule.d.ts +20 -0
  81. package/build/connections/ParentConnectionModule.js +56 -0
  82. package/build/connections/ParentConnectionModule.js.map +1 -0
  83. package/build/credentials/FullTailsFileService.d.ts +0 -1
  84. package/build/credentials/FullTailsFileService.js +0 -49
  85. package/build/credentials/FullTailsFileService.js.map +1 -1
  86. package/build/did/CachedDocumentLoader.d.ts +3 -0
  87. package/build/did/CachedDocumentLoader.js +7 -1
  88. package/build/did/CachedDocumentLoader.js.map +1 -1
  89. package/build/did/CachedWebDidResolver.d.ts +0 -4
  90. package/build/did/CachedWebDidResolver.js +1 -5
  91. package/build/did/CachedWebDidResolver.js.map +1 -1
  92. package/build/did/artifactServices.d.ts +12 -0
  93. package/build/did/artifactServices.js +48 -0
  94. package/build/did/artifactServices.js.map +1 -0
  95. package/build/did/legacyDidWeb.d.ts +6 -4
  96. package/build/did/legacyDidWeb.js +17 -14
  97. package/build/did/legacyDidWeb.js.map +1 -1
  98. package/build/did/publicDid.d.ts +4 -0
  99. package/build/did/publicDid.js +19 -0
  100. package/build/did/publicDid.js.map +1 -0
  101. package/build/events/BaseMessageEvents.js +139 -5
  102. package/build/events/BaseMessageEvents.js.map +1 -1
  103. package/build/events/ConnectionEvents.js +150 -86
  104. package/build/events/ConnectionEvents.js.map +1 -1
  105. package/build/events/VsAgentEvents.d.ts +11 -9
  106. package/build/events/VsAgentEvents.js +8 -1
  107. package/build/events/VsAgentEvents.js.map +1 -1
  108. package/build/events/VtFlowEvents.d.ts +1 -1
  109. package/build/events/VtFlowEvents.js +29 -17
  110. package/build/events/VtFlowEvents.js.map +1 -1
  111. package/build/index.d.ts +7 -1
  112. package/build/index.js +15 -2
  113. package/build/index.js.map +1 -1
  114. package/build/plugins/setupBaseDidComm.js +9 -12
  115. package/build/plugins/setupBaseDidComm.js.map +1 -1
  116. package/build/transports/VsAgentWsInboundTransport.d.ts +1 -1
  117. package/build/transports/VsAgentWsInboundTransport.js +20 -14
  118. package/build/transports/VsAgentWsInboundTransport.js.map +1 -1
  119. package/build/types.d.ts +14 -13
  120. package/build/types.js +1 -2
  121. package/build/types.js.map +1 -1
  122. package/build/utils/agent.d.ts +29 -4
  123. package/build/utils/agent.js +91 -22
  124. package/build/utils/agent.js.map +1 -1
  125. package/build/utils/boundedFetch.d.ts +13 -0
  126. package/build/utils/boundedFetch.js +47 -0
  127. package/build/utils/boundedFetch.js.map +1 -0
  128. package/build/utils/didReadiness.d.ts +9 -0
  129. package/build/utils/didReadiness.js +42 -0
  130. package/build/utils/didReadiness.js.map +1 -0
  131. package/build/utils/ecsClaims.d.ts +46 -0
  132. package/build/utils/ecsClaims.js +115 -0
  133. package/build/utils/ecsClaims.js.map +1 -0
  134. package/build/utils/ecsService.d.ts +8 -0
  135. package/build/utils/ecsService.js +23 -0
  136. package/build/utils/ecsService.js.map +1 -0
  137. package/build/utils/index.d.ts +7 -0
  138. package/build/utils/index.js +7 -0
  139. package/build/utils/index.js.map +1 -1
  140. package/build/utils/publishedDidRecord.d.ts +15 -0
  141. package/build/utils/publishedDidRecord.js +83 -0
  142. package/build/utils/publishedDidRecord.js.map +1 -0
  143. package/build/utils/selfIssuedEcsCredential.d.ts +8 -0
  144. package/build/utils/selfIssuedEcsCredential.js +153 -0
  145. package/build/utils/selfIssuedEcsCredential.js.map +1 -0
  146. package/build/utils/setupSelfTr.d.ts +35 -74
  147. package/build/utils/setupSelfTr.js +93 -312
  148. package/build/utils/setupSelfTr.js.map +1 -1
  149. package/build/utils/trustCredentialStore.d.ts +78 -9
  150. package/build/utils/trustCredentialStore.js +324 -136
  151. package/build/utils/trustCredentialStore.js.map +1 -1
  152. package/build/utils/typeMetadata.d.ts +43 -0
  153. package/build/utils/typeMetadata.js +77 -0
  154. package/build/utils/typeMetadata.js.map +1 -0
  155. package/build/utils/util.d.ts +19 -0
  156. package/build/utils/util.js +24 -0
  157. package/build/utils/util.js.map +1 -1
  158. package/build/utils/vcdm2.d.ts +34 -0
  159. package/build/utils/vcdm2.js +60 -0
  160. package/build/utils/vcdm2.js.map +1 -0
  161. package/build/utils/vtjscResolver.d.ts +23 -0
  162. package/build/utils/vtjscResolver.js +53 -0
  163. package/build/utils/vtjscResolver.js.map +1 -0
  164. package/build/vtFlow/VtFlowOrchestrator.d.ts +107 -15
  165. package/build/vtFlow/VtFlowOrchestrator.js +678 -116
  166. package/build/vtFlow/VtFlowOrchestrator.js.map +1 -1
  167. package/build/vtFlow/assertVerifiableService.d.ts +1 -0
  168. package/build/vtFlow/assertVerifiableService.js +45 -5
  169. package/build/vtFlow/assertVerifiableService.js.map +1 -1
  170. package/build/vtFlow/ecsIssuanceExemption.d.ts +12 -0
  171. package/build/vtFlow/ecsIssuanceExemption.js +84 -0
  172. package/build/vtFlow/ecsIssuanceExemption.js.map +1 -0
  173. package/build/vtFlow/index.d.ts +1 -0
  174. package/build/vtFlow/index.js +1 -0
  175. package/build/vtFlow/index.js.map +1 -1
  176. package/package.json +18 -12
  177. package/build/did/migrateWebVhLog.d.ts +0 -34
  178. package/build/did/migrateWebVhLog.js +0 -230
  179. package/build/did/migrateWebVhLog.js.map +0 -1
  180. package/build/did/migrateWebVhVersionTime.d.ts +0 -9
  181. package/build/did/migrateWebVhVersionTime.js +0 -191
  182. package/build/did/migrateWebVhVersionTime.js.map +0 -1
@@ -10,6 +10,7 @@ const anoncreds_nodejs_1 = require("@hyperledger/anoncreds-nodejs");
10
10
  const askar_nodejs_1 = require("@openwallet-foundation/askar-nodejs");
11
11
  const credo_ts_didcomm_vt_flow_1 = require("@verana-labs/credo-ts-didcomm-vt-flow");
12
12
  const credo_ts_didweb_anoncreds_1 = require("credo-ts-didweb-anoncreds");
13
+ const ParentConnectionModule_1 = require("../connections/ParentConnectionModule");
13
14
  const FullTailsFileService_1 = require("../credentials/FullTailsFileService");
14
15
  const CachedDocumentLoader_1 = require("../did/CachedDocumentLoader");
15
16
  const CachedWebDidResolver_1 = require("../did/CachedWebDidResolver");
@@ -21,13 +22,14 @@ const VsAgentWsOutboundTransport_1 = require("../transports/VsAgentWsOutboundTra
21
22
  */
22
23
  function setupBaseDidComm(options) {
23
24
  var _a;
25
+ const didcommVersions = (_a = options.didcommVersions) !== null && _a !== void 0 ? _a : ['v1', 'v2'];
24
26
  return {
25
27
  modules: {
26
28
  didcomm: new didcomm_1.DidCommModule({
27
29
  endpoints: options.endpoints,
28
- didcommVersions: options.didcommVersions,
30
+ didcommVersions,
29
31
  // BasicMessage protocols must be set separately, otherwise Credo rejects basicmessage/2.0.
30
- basicMessages: { protocols: (_a = options.didcommVersions) !== null && _a !== void 0 ? _a : ['v1'] },
32
+ basicMessages: { protocols: didcommVersions },
31
33
  transports: {
32
34
  outbound: [new didcomm_1.DidCommHttpOutboundTransport(), new VsAgentWsOutboundTransport_1.VsAgentWsOutboundTransport()],
33
35
  },
@@ -40,9 +42,8 @@ function setupBaseDidComm(options) {
40
42
  credentialProtocols: [
41
43
  new didcomm_1.DidCommCredentialV2Protocol({
42
44
  credentialFormats: [
43
- new anoncreds_1.LegacyIndyDidCommCredentialFormatService(),
44
45
  new anoncreds_1.AnonCredsDidCommCredentialFormatService(),
45
- new didcomm_1.DidCommJsonLdCredentialFormatService(),
46
+ new didcomm_1.DidCommDataIntegrityCredentialFormatService(),
46
47
  ],
47
48
  }),
48
49
  ],
@@ -51,14 +52,12 @@ function setupBaseDidComm(options) {
51
52
  autoAcceptProofs: didcomm_1.DidCommAutoAcceptProof.ContentApproved,
52
53
  proofProtocols: [
53
54
  new didcomm_1.DidCommProofV2Protocol({
54
- proofFormats: [
55
- new anoncreds_1.LegacyIndyDidCommProofFormatService(),
56
- new anoncreds_1.AnonCredsDidCommProofFormatService(),
57
- ],
55
+ proofFormats: [new anoncreds_1.AnonCredsDidCommProofFormatService()],
58
56
  }),
59
57
  ],
60
58
  },
61
59
  }),
60
+ parentConnection: new ParentConnectionModule_1.ParentConnectionModule(),
62
61
  askar: new askar_1.AskarModule({
63
62
  askar: askar_nodejs_1.askar,
64
63
  store: options.walletConfig,
@@ -76,10 +75,8 @@ function setupBaseDidComm(options) {
76
75
  ],
77
76
  }),
78
77
  dids: new core_1.DidsModule({
79
- resolvers: [
80
- new CachedWebDidResolver_1.CachedWebDidResolver({ publicApiBaseUrl: options.publicApiBaseUrl }),
81
- new webvh_1.WebVhDidResolver(),
82
- ],
78
+ // Credo appends only PeerDidResolver and KeyDidResolver to a supplied list, so did:jwk needs one.
79
+ resolvers: [new CachedWebDidResolver_1.CachedWebDidResolver(), new webvh_1.WebVhDidResolver(), new core_1.JwkDidResolver()],
83
80
  registrars: [new WebDidRegistrar_1.WebDidRegistrar(), new webvh_1.WebVhDidRegistrar()],
84
81
  }),
85
82
  w3cCredentials: new core_1.W3cCredentialsModule({
@@ -1 +1 @@
1
- {"version":3,"file":"setupBaseDidComm.js","sourceRoot":"","sources":["../../src/plugins/setupBaseDidComm.ts"],"names":[],"mappings":";;AAiDA,4CAoEC;AAnHD,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,OAAO;QACL,OAAO,EAAE;YACP,OAAO,EAAE,IAAI,uBAAa,CAAC;gBACzB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,2FAA2F;gBAC3F,aAAa,EAAE,EAAE,SAAS,EAAE,MAAA,OAAO,CAAC,eAAe,mCAAI,CAAC,IAAI,CAAC,EAAE;gBAC/D,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"}
1
+ {"version":3,"file":"setupBaseDidComm.js","sourceRoot":"","sources":["../../src/plugins/setupBaseDidComm.ts"],"names":[],"mappings":";;AAgDA,4CAgEC;AA9GD,mDAI4B;AAC5B,2CAA4E;AAC5E,yCAAiF;AACjF,+CAQ0B;AAC1B,2CAA6F;AAC7F,oEAAyD;AACzD,sEAA2D;AAC3D,oFAAoG;AACpG,yEAAmE;AAGnE,kFAA8E;AAC9E,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,mDAAuC,EAAE;gCAC7C,IAAI,qDAA2C,EAAE;6BAClD;yBACF,CAAC;qBACH;iBACF;gBACD,MAAM,EAAE;oBACN,gBAAgB,EAAE,gCAAsB,CAAC,eAAe;oBACxD,cAAc,EAAE;wBACd,IAAI,gCAAsB,CAAC;4BACzB,YAAY,EAAE,CAAC,IAAI,8CAAkC,EAAE,CAAC;yBACzD,CAAC;qBACH;iBACF;aACF,CAAC;YACF,gBAAgB,EAAE,IAAI,+CAAsB,EAAE;YAC9C,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,kGAAkG;gBAClG,SAAS,EAAE,CAAC,IAAI,2CAAoB,EAAE,EAAE,IAAI,wBAAgB,EAAE,EAAE,IAAI,qBAAc,EAAE,CAAC;gBACrF,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
- this.logger = agentContext.config.logger;
50
- this.logger.debug('VS Agent Ws Inbound transport start');
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
- this.logger.debug(`Starting WS inbound transport`, {
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
- this.logger.debug('Socket connected.');
58
+ logger.debug('Socket connected.');
58
59
  socket.isAlive = true;
59
60
  socket.lastActivity = new Date();
60
61
  if (!this.socketIds[socketId]) {
61
- this.logger.debug(`Saving new socket with id ${socketId}.`);
62
+ logger.debug(`Saving new socket with id ${socketId}.`);
62
63
  this.socketIds[socketId] = socket;
63
- const session = new WebSocketTransportSession(socketId, socket, this.logger);
64
+ const session = new WebSocketTransportSession(socketId, socket, logger);
64
65
  this.listenOnWebSocketMessages(agentContext, socket, session);
65
66
  socket.on('close', () => {
66
- this.logger.debug('Socket closed.');
67
+ logger.debug('Socket closed.');
67
68
  transportService.removeSession(session);
68
69
  });
69
70
  }
70
71
  else {
71
- this.logger.debug(`Socket with id ${socketId} already exists.`);
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
- this.logger.debug('Closing WebSocket Server');
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
- this.logger.debug('Get WebSocket Server');
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
- this.logger.debug('Pong received');
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
- this.logger.debug('WebSocket message event received.', { url: event.target.url, data: event.data });
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('Error processing message');
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":"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"}
1
+ {"version":3,"file":"VsAgentWsInboundTransport.js","sourceRoot":"","sources":["../../src/transports/VsAgentWsInboundTransport.ts"],"names":[],"mappings":"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"}
package/build/types.d.ts CHANGED
@@ -1,28 +1,29 @@
1
1
  import type { BaseAgentModules, VsAgent } from './agent/VsAgent';
2
- import type { IBaseMessage, MessageType } from '@verana-labs/vs-agent-model';
2
+ import type { IndexerHandlerRegistry } from './blockchain/handlers/IndexerHandlerRegistry';
3
+ import type { IncomingMessage, ServerResponse } from 'node:http';
3
4
  import { BaseLogger } from '@credo-ts/core';
4
- import { DidCommConnectionRecord } from '@credo-ts/didcomm';
5
- export declare const MESSAGE_HANDLERS = "MESSAGE_HANDLERS";
6
- export interface MessageHandler {
7
- readonly supportedTypes: MessageType[];
8
- readonly openApiExamples: Record<string, {
9
- summary: string;
10
- description: string;
11
- value: object;
12
- }>;
13
- handle(agent: VsAgent<any>, message: IBaseMessage, connection: DidCommConnectionRecord): Promise<string | undefined>;
14
- }
15
5
  export type Plugin = {
16
6
  modules: Record<string, unknown>;
17
7
  };
8
+ export interface DidcommModule {
9
+ module: string;
10
+ prefixes: string[];
11
+ }
18
12
  export interface VsAgentNestPlugin {
19
13
  name: string;
20
14
  credoPlugin?: Plugin;
15
+ publicMiddleware?: (request: IncomingMessage, response: ServerResponse, next: (error?: unknown) => void) => void;
21
16
  controllers?: (new (...args: any[]) => any)[];
22
17
  providers?: any[];
23
- messageHandlers?: (new (...args: any[]) => MessageHandler)[];
18
+ didcommModules?: DidcommModule[];
24
19
  imports?: any[];
25
20
  registerEvents?: (agent: VsAgent<BaseAgentModules>, logger: BaseLogger) => void;
21
+ /**
22
+ * Wraps or adds indexer event handlers. The agent calls this after it built the default registry
23
+ * and after `registerEvents`, so the original handler of a msg is already there to preserve, and
24
+ * a plugin driven by indexer notifications cannot be wired from `registerEvents`.
25
+ */
26
+ registerIndexerHandlers?: (registry: IndexerHandlerRegistry) => void;
26
27
  }
27
28
  export declare const ISSUER_PARTICIPANT_TYPE = 1;
28
29
  export declare const VERIFIER_PARTICIPANT_TYPE = 2;
package/build/types.js CHANGED
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HOLDER_PARTICIPANT_TYPE = exports.VERIFIER_GRANTOR_PARTICIPANT_TYPE = exports.ISSUER_GRANTOR_PARTICIPANT_TYPE = exports.VERIFIER_PARTICIPANT_TYPE = exports.ISSUER_PARTICIPANT_TYPE = exports.MESSAGE_HANDLERS = void 0;
4
- exports.MESSAGE_HANDLERS = 'MESSAGE_HANDLERS';
3
+ exports.HOLDER_PARTICIPANT_TYPE = exports.VERIFIER_GRANTOR_PARTICIPANT_TYPE = exports.ISSUER_GRANTOR_PARTICIPANT_TYPE = exports.VERIFIER_PARTICIPANT_TYPE = exports.ISSUER_PARTICIPANT_TYPE = void 0;
5
4
  exports.ISSUER_PARTICIPANT_TYPE = 1;
6
5
  exports.VERIFIER_PARTICIPANT_TYPE = 2;
7
6
  exports.ISSUER_GRANTOR_PARTICIPANT_TYPE = 3;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAMa,QAAA,gBAAgB,GAAG,kBAAkB,CAAA;AAwBrC,QAAA,uBAAuB,GAAG,CAAC,CAAA;AAC3B,QAAA,yBAAyB,GAAG,CAAC,CAAA;AAC7B,QAAA,+BAA+B,GAAG,CAAC,CAAA;AACnC,QAAA,iCAAiC,GAAG,CAAC,CAAA;AACrC,QAAA,uBAAuB,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAmCa,QAAA,uBAAuB,GAAG,CAAC,CAAA;AAC3B,QAAA,yBAAyB,GAAG,CAAC,CAAA;AAC7B,QAAA,+BAA+B,GAAG,CAAC,CAAA;AACnC,QAAA,iCAAiC,GAAG,CAAC,CAAA;AACrC,QAAA,uBAAuB,GAAG,CAAC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import type { VsAgent } from '../agent/VsAgent';
2
- import { DidCommMessage, type DidCommVersion } from '@credo-ts/didcomm';
2
+ import { GenericRecord, TagsBase } from '@credo-ts/core';
3
+ import { type DidCommConnectionRecord, DidCommMessage, type DidCommVersion } from '@credo-ts/didcomm';
3
4
  /**
4
5
  * Creates an out of band invitation that will equal to the public DID in case the agent has one defined,
5
6
  * and a new one every time in case the agent does not have any public DID.
@@ -11,11 +12,35 @@ export declare function createInvitation(options: {
11
12
  agent: VsAgent;
12
13
  messages?: DidCommMessage[];
13
14
  useLegacyDid?: boolean;
14
- invitationBaseUrl: string;
15
- imageUrl?: string;
16
15
  didCommVersion?: DidCommVersion;
17
16
  }): Promise<{
17
+ invitation: import("@credo-ts/didcomm").DidCommPlaintextMessage;
18
+ outOfBandInvitation: import("@credo-ts/didcomm").DidCommOutOfBandInvitation;
18
19
  url: string;
19
20
  }>;
21
+ export declare function isUsableConnectionTo(connection: DidCommConnectionRecord, peerPublicDid: string): boolean;
22
+ /**
23
+ * Connects to a peer that publishes a public DID, and reuses the connection that the
24
+ * agent already has to that peer.
25
+ *
26
+ * The agent must keep one connection record only for each peer. A second record for the
27
+ * same pair of DIDs makes the `findByDids` lookup of the message receiver throw
28
+ * `RecordDuplicateError`, and the agent then fails to process every inbound message from
29
+ * that peer. To find the existing record, the agent reads the `publicDid` tag that it
30
+ * sets on each connection to a peer that publishes a public DID.
31
+ *
32
+ * @param agent the local agent
33
+ * @param peerPublicDid the public DID of the peer
34
+ * @returns the id of a ready connection record
35
+ */
36
+ export declare function connectToPublicDid(agent: VsAgent, peerPublicDid: string): Promise<string>;
20
37
  export declare function getRecordId(agent: VsAgent, id: string): Promise<string>;
21
- export declare function getWebDid(agent: VsAgent): Promise<string | undefined>;
38
+ /** The record type of every attested resource of the AnonCreds registry, per [VSA-PUB-AC]. */
39
+ export declare const ATTESTED_RESOURCE_TYPE = "AttestedResource";
40
+ export type AttestedResourceTags = TagsBase & {
41
+ type?: never;
42
+ attestedResourceId?: never;
43
+ };
44
+ export declare function saveAttestedResource(agent: VsAgent, resource: Record<string, unknown>, tags?: AttestedResourceTags): Promise<GenericRecord | undefined>;
45
+ export declare function findAttestedResources(agent: VsAgent, query: TagsBase): Promise<GenericRecord[]>;
46
+ export declare function findAttestedResource(agent: VsAgent, query: TagsBase): Promise<GenericRecord | undefined>;
@@ -1,10 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ATTESTED_RESOURCE_TYPE = void 0;
3
4
  exports.createInvitation = createInvitation;
5
+ exports.isUsableConnectionTo = isUsableConnectionTo;
6
+ exports.connectToPublicDid = connectToPublicDid;
4
7
  exports.getRecordId = getRecordId;
5
- exports.getWebDid = getWebDid;
8
+ exports.saveAttestedResource = saveAttestedResource;
9
+ exports.findAttestedResources = findAttestedResources;
10
+ exports.findAttestedResource = findAttestedResource;
6
11
  const core_1 = require("@credo-ts/core");
7
12
  const didcomm_1 = require("@credo-ts/didcomm");
13
+ const credo_ts_didcomm_vt_flow_1 = require("@verana-labs/credo-ts-didcomm-vt-flow");
14
+ const legacyDidWeb_1 = require("../did/legacyDidWeb");
15
+ const ecsService_1 = require("./ecsService");
8
16
  /**
9
17
  * Creates an out of band invitation that will equal to the public DID in case the agent has one defined,
10
18
  * and a new one every time in case the agent does not have any public DID.
@@ -13,43 +21,104 @@ const didcomm_1 = require("@credo-ts/didcomm");
13
21
  * @returns
14
22
  */
15
23
  async function createInvitation(options) {
16
- const { agent, messages, useLegacyDid, invitationBaseUrl, imageUrl, didCommVersion } = options;
17
- // Use legacy did:web in case agent's did is webvh and using legacy did
18
- const ourDid = agent.did && (0, core_1.parseDid)(agent.did).method === 'webvh' && useLegacyDid
19
- ? `did:web:${(0, core_1.parseDid)(agent.did).id.split(':')[1]}`
20
- : agent.did;
21
- const effectiveVersion = didCommVersion !== null && didCommVersion !== void 0 ? didCommVersion : (agent.didcomm.config.sendsV2 ? 'v2' : 'v1');
24
+ var _a, _b, _c;
25
+ const { agent, messages, useLegacyDid, didCommVersion } = options;
26
+ const ourDid = (_a = (useLegacyDid && agent.did ? (0, legacyDidWeb_1.getLegacyDidWeb)(agent.did) : undefined)) !== null && _a !== void 0 ? _a : agent.did;
27
+ const effectiveVersion = didCommVersion !== null && didCommVersion !== void 0 ? didCommVersion : 'v2';
22
28
  const isV2 = effectiveVersion === 'v2';
23
29
  if (!agent.didcomm.config.didcommVersions.includes(effectiveVersion)) {
24
30
  throw new Error(`Cannot create ${effectiveVersion} invitation: agent is configured with ` +
25
31
  `didcommVersions: [${agent.didcomm.config.didcommVersions.join(', ')}]. ` +
26
- `Add "${effectiveVersion}" to AGENT_DIDCOMM_VERSIONS or omit didCommVersion from the request.`);
32
+ `Add "${effectiveVersion}" to the agent's didcommVersions configuration.`);
27
33
  }
28
- const outOfBandInvitation = (await agent.didcomm.oob.createInvitation(Object.assign({ label: agent.label, multiUseInvitation: !messages, imageUrl,
29
- messages, didCommVersion: effectiveVersion }, (isV2
34
+ const claims = await (0, ecsService_1.ecsServiceClaims)(agent);
35
+ const outOfBandInvitation = (await agent.didcomm.oob.createInvitation(Object.assign({ label: claims === null || claims === void 0 ? void 0 : claims.name, multiUseInvitation: !messages, imageUrl: claims === null || claims === void 0 ? void 0 : claims.logoUri, messages, didCommVersion: effectiveVersion }, (isV2
30
36
  ? { ourDid }
31
37
  : {
32
- handshakeProtocols: [didcomm_1.DidCommHandshakeProtocol.DidExchange, didcomm_1.DidCommHandshakeProtocol.Connections],
38
+ handshakeProtocols: [didcomm_1.DidCommHandshakeProtocol.DidExchange],
33
39
  invitationDid: ourDid,
34
40
  })))).outOfBandInvitation;
35
41
  return {
36
- url: outOfBandInvitation.toUrl({
37
- domain: invitationBaseUrl,
38
- }),
42
+ invitation: (_c = (_b = outOfBandInvitation.v2Invitation) === null || _b === void 0 ? void 0 : _b.toJSON()) !== null && _c !== void 0 ? _c : outOfBandInvitation.toJSON(),
43
+ outOfBandInvitation,
44
+ url: outOfBandInvitation.toUrl({ domain: agent.publicApiBaseUrl }),
39
45
  };
40
46
  }
47
+ function isUsableConnectionTo(connection, peerPublicDid) {
48
+ return connection.isReady && !!connection.theirDid && (0, credo_ts_didcomm_vt_flow_1.peerAnchorDid)(connection) === peerPublicDid;
49
+ }
50
+ /**
51
+ * Connects to a peer that publishes a public DID, and reuses the connection that the
52
+ * agent already has to that peer.
53
+ *
54
+ * The agent must keep one connection record only for each peer. A second record for the
55
+ * same pair of DIDs makes the `findByDids` lookup of the message receiver throw
56
+ * `RecordDuplicateError`, and the agent then fails to process every inbound message from
57
+ * that peer. To find the existing record, the agent reads the `publicDid` tag that it
58
+ * sets on each connection to a peer that publishes a public DID.
59
+ *
60
+ * @param agent the local agent
61
+ * @param peerPublicDid the public DID of the peer
62
+ * @returns the id of a ready connection record
63
+ */
64
+ async function connectToPublicDid(agent, peerPublicDid) {
65
+ if (!agent.did)
66
+ throw new Error('Agent has no public DID');
67
+ const [existing] = await agent.didcomm.connections.findAllByQuery({
68
+ publicDid: peerPublicDid,
69
+ });
70
+ if (existing) {
71
+ if (isUsableConnectionTo(existing, peerPublicDid))
72
+ return existing.id;
73
+ await agent.didcomm.connections.deleteById(existing.id);
74
+ }
75
+ const { connectionRecord } = await agent.didcomm.oob.receiveImplicitInvitation({
76
+ did: peerPublicDid,
77
+ ourDid: agent.did,
78
+ label: await (0, ecsService_1.agentDisplayName)(agent),
79
+ didCommVersion: 'v2',
80
+ });
81
+ if (!connectionRecord)
82
+ throw new Error(`Failed to establish a DIDComm connection to ${peerPublicDid}`);
83
+ try {
84
+ // Tag the record with the public DID of the peer, to find it on the next call.
85
+ connectionRecord.setTag('publicDid', peerPublicDid);
86
+ await agent.context.resolve(didcomm_1.DidCommConnectionRepository).update(agent.context, connectionRecord);
87
+ const ready = await agent.didcomm.connections.returnWhenIsConnected(connectionRecord.id);
88
+ return ready.id;
89
+ }
90
+ catch (error) {
91
+ // Without the tag, the next call cannot find this record. It dials again and leaves two
92
+ // records for the pair. The message receiver's findByDids then throws RecordDuplicateError.
93
+ await agent.didcomm.connections.deleteById(connectionRecord.id).catch(deleteError => {
94
+ agent.config.logger.warn(`Failed to delete the incomplete connection ${connectionRecord.id}`, {
95
+ error: deleteError,
96
+ });
97
+ });
98
+ throw error;
99
+ }
100
+ }
41
101
  async function getRecordId(agent, id) {
42
102
  var _a;
43
103
  const record = await agent.genericRecords.findById(id);
44
104
  return (_a = record === null || record === void 0 ? void 0 : record.getTag('messageId')) !== null && _a !== void 0 ? _a : id;
45
105
  }
46
- async function getWebDid(agent) {
47
- if (agent.did) {
48
- const parsedDid = (0, core_1.parseDid)(agent.did);
49
- if (parsedDid.method === 'web')
50
- return agent.did;
51
- if (parsedDid.method === 'webvh')
52
- return `did:web:${parsedDid.id.split(':')[1]}`;
53
- }
106
+ /** The record type of every attested resource of the AnonCreds registry, per [VSA-PUB-AC]. */
107
+ exports.ATTESTED_RESOURCE_TYPE = 'AttestedResource';
108
+ async function saveAttestedResource(agent, resource, tags) {
109
+ if (!resource)
110
+ return undefined;
111
+ return await agent.genericRecords.save({
112
+ id: core_1.utils.uuid(),
113
+ content: resource,
114
+ tags: Object.assign({ attestedResourceId: resource.id, type: exports.ATTESTED_RESOURCE_TYPE }, tags),
115
+ });
116
+ }
117
+ async function findAttestedResources(agent, query) {
118
+ return await agent.genericRecords.findAllByQuery(Object.assign(Object.assign({}, query), { type: exports.ATTESTED_RESOURCE_TYPE }));
119
+ }
120
+ async function findAttestedResource(agent, query) {
121
+ const [record] = await findAttestedResources(agent, query);
122
+ return record;
54
123
  }
55
124
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":";;AAYA,4CA+CC;AAED,kCAGC;AAED,8BAOC;AAvED,yCAAyC;AACzC,+CAAiG;AAEjG;;;;;;GAMG;AACI,KAAK,UAAU,gBAAgB,CAAC,OAOtC;IACC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAA;IAE9F,uEAAuE;IACvE,MAAM,MAAM,GACV,KAAK,CAAC,GAAG,IAAI,IAAA,eAAQ,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,YAAY;QACjE,CAAC,CAAC,WAAW,IAAA,eAAQ,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACnD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAA;IAEf,MAAM,gBAAgB,GAAmB,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACvG,MAAM,IAAI,GAAG,gBAAgB,KAAK,IAAI,CAAA;IAEtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CACb,iBAAiB,gBAAgB,wCAAwC;YACvE,qBAAqB,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YACzE,QAAQ,gBAAgB,sEAAsE,CACjG,CAAA;IACH,CAAC;IAED,MAAM,mBAAmB,GAAG,CAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,iBACtC,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,kBAAkB,EAAE,CAAC,QAAQ,EAC7B,QAAQ;QACR,QAAQ,EACR,cAAc,EAAE,gBAAgB,IAC7B,CAAC,IAAI;QACN,CAAC,CAAC,EAAE,MAAM,EAAE;QACZ,CAAC,CAAC;YACE,kBAAkB,EAAE,CAAC,kCAAwB,CAAC,WAAW,EAAE,kCAAwB,CAAC,WAAW,CAAC;YAChG,aAAa,EAAE,MAAM;SACtB,CAAC,EACN,CACH,CAAC,mBAAmB,CAAA;IACrB,OAAO;QACL,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC;YAC7B,MAAM,EAAE,iBAAiB;SAC1B,CAAC;KACH,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,KAAc,EAAE,EAAU;;IAC1D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACtD,OAAO,MAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,CAAC,WAAW,CAAY,mCAAI,EAAE,CAAA;AACtD,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,KAAc;IAC5C,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,SAAS,GAAG,IAAA,eAAQ,EAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAErC,IAAI,SAAS,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC,GAAG,CAAA;QAChD,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,WAAW,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAClF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** The `sha384-` subresource integrity metadata of the given bytes. */
2
+ export declare function digestOfBytes(content: string | Uint8Array): string;
3
+ /**
4
+ * Reads the bytes a URL serves under the network boundary the spec puts on step 3 of the trust
5
+ * decision: `https` only, no redirect, and an answer within five seconds. The address ban of that
6
+ * boundary is not enforced yet (#754).
7
+ */
8
+ export declare function fetchBoundedBytes(url: string, timeoutMs?: number): Promise<Uint8Array>;
9
+ /**
10
+ * The `sha384-` integrity metadata of the bytes a URL serves, read with {@link fetchBoundedBytes}.
11
+ * The digest covers the bytes on the wire, never a re-encoding of the decoded document.
12
+ */
13
+ export declare function digestOfBoundedUri(url: string, timeoutMs?: number): Promise<string>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.digestOfBytes = digestOfBytes;
4
+ exports.fetchBoundedBytes = fetchBoundedBytes;
5
+ exports.digestOfBoundedUri = digestOfBoundedUri;
6
+ const crypto_1 = require("crypto");
7
+ const BOUNDED_TIMEOUT_MS = 5000;
8
+ /** The `sha384-` subresource integrity metadata of the given bytes. */
9
+ function digestOfBytes(content) {
10
+ return `sha384-${(0, crypto_1.createHash)('sha384').update(content).digest('base64')}`;
11
+ }
12
+ /**
13
+ * Reads the bytes a URL serves under the network boundary the spec puts on step 3 of the trust
14
+ * decision: `https` only, no redirect, and an answer within five seconds. The address ban of that
15
+ * boundary is not enforced yet (#754).
16
+ */
17
+ async function fetchBoundedBytes(url, timeoutMs = BOUNDED_TIMEOUT_MS) {
18
+ let target;
19
+ try {
20
+ target = new URL(url);
21
+ }
22
+ catch (_a) {
23
+ throw new Error(`${url} is not an absolute URL`);
24
+ }
25
+ if (target.protocol !== 'https:') {
26
+ throw new Error(`${url} does not use https, which this boundary requires`);
27
+ }
28
+ const response = await fetch(target.href, {
29
+ redirect: 'manual',
30
+ signal: AbortSignal.timeout(timeoutMs),
31
+ });
32
+ if (response.type === 'opaqueredirect' || (response.status >= 300 && response.status < 400)) {
33
+ throw new Error(`${url} answered with a redirect, which this boundary does not follow`);
34
+ }
35
+ if (!response.ok) {
36
+ throw new Error(`${url} answered ${response.status} ${response.statusText}`);
37
+ }
38
+ return new Uint8Array(await response.arrayBuffer());
39
+ }
40
+ /**
41
+ * The `sha384-` integrity metadata of the bytes a URL serves, read with {@link fetchBoundedBytes}.
42
+ * The digest covers the bytes on the wire, never a re-encoding of the decoded document.
43
+ */
44
+ async function digestOfBoundedUri(url, timeoutMs) {
45
+ return digestOfBytes(await fetchBoundedBytes(url, timeoutMs));
46
+ }
47
+ //# sourceMappingURL=boundedFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundedFetch.js","sourceRoot":"","sources":["../../src/utils/boundedFetch.ts"],"names":[],"mappings":";;AAKA,sCAEC;AAOD,8CA0BC;AAMD,gDAEC;AAhDD,mCAAmC;AAEnC,MAAM,kBAAkB,GAAG,IAAK,CAAA;AAEhC,uEAAuE;AACvE,SAAgB,aAAa,CAAC,OAA4B;IACxD,OAAO,UAAU,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;AAC1E,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,YAAoB,kBAAkB;IAEtC,IAAI,MAAW,CAAA;IACf,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAAC,WAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,yBAAyB,CAAC,CAAA;IAClD,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,mDAAmD,CAAC,CAAA;IAC5E,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;QACxC,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;KACvC,CAAC,CAAA;IACF,IAAI,QAAQ,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;QAC5F,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,gEAAgE,CAAC,CAAA;IACzF,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,aAAa,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IAC9E,CAAC;IAED,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;AACrD,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CAAC,GAAW,EAAE,SAAkB;IACtE,OAAO,aAAa,CAAC,MAAM,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAA;AAC/D,CAAC"}
@@ -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"}