@hashgraphonline/standards-sdk 0.1.159 → 0.1.160

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 (326) hide show
  1. package/dist/cjs/hcs-12/validation/schemas.d.ts +4 -4
  2. package/dist/cjs/hcs-14/index.d.ts +5 -0
  3. package/dist/cjs/hcs-14/index.d.ts.map +1 -1
  4. package/dist/cjs/hcs-14/resolvers/aid-dns-web-profile.d.ts +37 -0
  5. package/dist/cjs/hcs-14/resolvers/aid-dns-web-profile.d.ts.map +1 -0
  6. package/dist/cjs/hcs-14/resolvers/dns.d.ts +3 -0
  7. package/dist/cjs/hcs-14/resolvers/dns.d.ts.map +1 -0
  8. package/dist/cjs/hcs-14/resolvers/hcs-11-profile.d.ts +8 -0
  9. package/dist/cjs/hcs-14/resolvers/hcs-11-profile.d.ts.map +1 -0
  10. package/dist/cjs/hcs-14/resolvers/profile-utils.d.ts +9 -0
  11. package/dist/cjs/hcs-14/resolvers/profile-utils.d.ts.map +1 -0
  12. package/dist/cjs/hcs-14/resolvers/registry.d.ts +21 -1
  13. package/dist/cjs/hcs-14/resolvers/registry.d.ts.map +1 -1
  14. package/dist/cjs/hcs-14/resolvers/types.d.ts +106 -5
  15. package/dist/cjs/hcs-14/resolvers/types.d.ts.map +1 -1
  16. package/dist/cjs/hcs-14/resolvers/uaid-did-resolution-profile.d.ts +10 -0
  17. package/dist/cjs/hcs-14/resolvers/uaid-did-resolution-profile.d.ts.map +1 -0
  18. package/dist/cjs/hcs-14/resolvers/uaid-dns-web-profile.d.ts +22 -0
  19. package/dist/cjs/hcs-14/resolvers/uaid-dns-web-profile.d.ts.map +1 -0
  20. package/dist/cjs/hcs-14/sdk.d.ts +16 -1
  21. package/dist/cjs/hcs-14/sdk.d.ts.map +1 -1
  22. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  23. package/dist/cjs/services/registry-broker/schemas.d.ts +1548 -0
  24. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  25. package/dist/cjs/standards-sdk.cjs +2 -2
  26. package/dist/cjs/standards-sdk.cjs.map +1 -1
  27. package/dist/es/hcs-12/validation/schemas.d.ts +4 -4
  28. package/dist/es/hcs-14/index.d.ts +5 -0
  29. package/dist/es/hcs-14/index.d.ts.map +1 -1
  30. package/dist/es/hcs-14/resolvers/aid-dns-web-profile.d.ts +37 -0
  31. package/dist/es/hcs-14/resolvers/aid-dns-web-profile.d.ts.map +1 -0
  32. package/dist/es/hcs-14/resolvers/dns.d.ts +3 -0
  33. package/dist/es/hcs-14/resolvers/dns.d.ts.map +1 -0
  34. package/dist/es/hcs-14/resolvers/hcs-11-profile.d.ts +8 -0
  35. package/dist/es/hcs-14/resolvers/hcs-11-profile.d.ts.map +1 -0
  36. package/dist/es/hcs-14/resolvers/profile-utils.d.ts +9 -0
  37. package/dist/es/hcs-14/resolvers/profile-utils.d.ts.map +1 -0
  38. package/dist/es/hcs-14/resolvers/registry.d.ts +21 -1
  39. package/dist/es/hcs-14/resolvers/registry.d.ts.map +1 -1
  40. package/dist/es/hcs-14/resolvers/types.d.ts +106 -5
  41. package/dist/es/hcs-14/resolvers/types.d.ts.map +1 -1
  42. package/dist/es/hcs-14/resolvers/uaid-did-resolution-profile.d.ts +10 -0
  43. package/dist/es/hcs-14/resolvers/uaid-did-resolution-profile.d.ts.map +1 -0
  44. package/dist/es/hcs-14/resolvers/uaid-dns-web-profile.d.ts +22 -0
  45. package/dist/es/hcs-14/resolvers/uaid-dns-web-profile.d.ts.map +1 -0
  46. package/dist/es/hcs-14/sdk.d.ts +16 -1
  47. package/dist/es/hcs-14/sdk.d.ts.map +1 -1
  48. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  49. package/dist/es/services/registry-broker/schemas.d.ts +1548 -0
  50. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  51. package/dist/es/standards-sdk.es.js +96 -83
  52. package/dist/es/standards-sdk.es.js.map +1 -1
  53. package/dist/es/standards-sdk.es100.js +41 -224
  54. package/dist/es/standards-sdk.es100.js.map +1 -1
  55. package/dist/es/standards-sdk.es101.js +249 -97
  56. package/dist/es/standards-sdk.es101.js.map +1 -1
  57. package/dist/es/standards-sdk.es102.js +95 -27
  58. package/dist/es/standards-sdk.es102.js.map +1 -1
  59. package/dist/es/standards-sdk.es103.js +97 -80
  60. package/dist/es/standards-sdk.es103.js.map +1 -1
  61. package/dist/es/standards-sdk.es104.js +29 -30
  62. package/dist/es/standards-sdk.es104.js.map +1 -1
  63. package/dist/es/standards-sdk.es105.js +229 -249
  64. package/dist/es/standards-sdk.es105.js.map +1 -1
  65. package/dist/es/standards-sdk.es106.js +103 -468
  66. package/dist/es/standards-sdk.es106.js.map +1 -1
  67. package/dist/es/standards-sdk.es107.js +32 -103
  68. package/dist/es/standards-sdk.es107.js.map +1 -1
  69. package/dist/es/standards-sdk.es108.js +79 -155
  70. package/dist/es/standards-sdk.es108.js.map +1 -1
  71. package/dist/es/standards-sdk.es109.js +28 -31
  72. package/dist/es/standards-sdk.es109.js.map +1 -1
  73. package/dist/es/standards-sdk.es11.js +1 -1
  74. package/dist/es/standards-sdk.es110.js +250 -10
  75. package/dist/es/standards-sdk.es110.js.map +1 -1
  76. package/dist/es/standards-sdk.es111.js +451 -115
  77. package/dist/es/standards-sdk.es111.js.map +1 -1
  78. package/dist/es/standards-sdk.es112.js +101 -25
  79. package/dist/es/standards-sdk.es112.js.map +1 -1
  80. package/dist/es/standards-sdk.es113.js +155 -17
  81. package/dist/es/standards-sdk.es113.js.map +1 -1
  82. package/dist/es/standards-sdk.es114.js +29 -155
  83. package/dist/es/standards-sdk.es114.js.map +1 -1
  84. package/dist/es/standards-sdk.es115.js +9 -200
  85. package/dist/es/standards-sdk.es115.js.map +1 -1
  86. package/dist/es/standards-sdk.es116.js +109 -757
  87. package/dist/es/standards-sdk.es116.js.map +1 -1
  88. package/dist/es/standards-sdk.es117.js +27 -11
  89. package/dist/es/standards-sdk.es117.js.map +1 -1
  90. package/dist/es/standards-sdk.es118.js +19 -564
  91. package/dist/es/standards-sdk.es118.js.map +1 -1
  92. package/dist/es/standards-sdk.es119.js +140 -582
  93. package/dist/es/standards-sdk.es119.js.map +1 -1
  94. package/dist/es/standards-sdk.es12.js +1 -1
  95. package/dist/es/standards-sdk.es120.js +202 -12
  96. package/dist/es/standards-sdk.es120.js.map +1 -1
  97. package/dist/es/standards-sdk.es121.js +790 -2
  98. package/dist/es/standards-sdk.es121.js.map +1 -1
  99. package/dist/es/standards-sdk.es122.js +10 -84
  100. package/dist/es/standards-sdk.es122.js.map +1 -1
  101. package/dist/es/standards-sdk.es123.js +567 -40
  102. package/dist/es/standards-sdk.es123.js.map +1 -1
  103. package/dist/es/standards-sdk.es124.js +602 -2
  104. package/dist/es/standards-sdk.es124.js.map +1 -1
  105. package/dist/es/standards-sdk.es125.js +12 -234
  106. package/dist/es/standards-sdk.es125.js.map +1 -1
  107. package/dist/es/standards-sdk.es126.js +2 -1140
  108. package/dist/es/standards-sdk.es126.js.map +1 -1
  109. package/dist/es/standards-sdk.es127.js +73 -292
  110. package/dist/es/standards-sdk.es127.js.map +1 -1
  111. package/dist/es/standards-sdk.es128.js +36 -418
  112. package/dist/es/standards-sdk.es128.js.map +1 -1
  113. package/dist/es/standards-sdk.es129.js +2 -355
  114. package/dist/es/standards-sdk.es129.js.map +1 -1
  115. package/dist/es/standards-sdk.es13.js +1 -1
  116. package/dist/es/standards-sdk.es130.js +198 -1079
  117. package/dist/es/standards-sdk.es130.js.map +1 -1
  118. package/dist/es/standards-sdk.es131.js +1107 -175
  119. package/dist/es/standards-sdk.es131.js.map +1 -1
  120. package/dist/es/standards-sdk.es132.js +218 -1479
  121. package/dist/es/standards-sdk.es132.js.map +1 -1
  122. package/dist/es/standards-sdk.es133.js +422 -1236
  123. package/dist/es/standards-sdk.es133.js.map +1 -1
  124. package/dist/es/standards-sdk.es134.js +351 -13
  125. package/dist/es/standards-sdk.es134.js.map +1 -1
  126. package/dist/es/standards-sdk.es135.js +1102 -73
  127. package/dist/es/standards-sdk.es135.js.map +1 -1
  128. package/dist/es/standards-sdk.es136.js +203 -76
  129. package/dist/es/standards-sdk.es136.js.map +1 -1
  130. package/dist/es/standards-sdk.es137.js +1459 -785
  131. package/dist/es/standards-sdk.es137.js.map +1 -1
  132. package/dist/es/standards-sdk.es138.js +1254 -59
  133. package/dist/es/standards-sdk.es138.js.map +1 -1
  134. package/dist/es/standards-sdk.es139.js +14 -156
  135. package/dist/es/standards-sdk.es139.js.map +1 -1
  136. package/dist/es/standards-sdk.es14.js +1 -1
  137. package/dist/es/standards-sdk.es140.js +87 -7
  138. package/dist/es/standards-sdk.es140.js.map +1 -1
  139. package/dist/es/standards-sdk.es141.js +74 -79
  140. package/dist/es/standards-sdk.es141.js.map +1 -1
  141. package/dist/es/standards-sdk.es142.js +889 -61
  142. package/dist/es/standards-sdk.es142.js.map +1 -1
  143. package/dist/es/standards-sdk.es143.js +60 -30
  144. package/dist/es/standards-sdk.es143.js.map +1 -1
  145. package/dist/es/standards-sdk.es144.js +159 -34
  146. package/dist/es/standards-sdk.es144.js.map +1 -1
  147. package/dist/es/standards-sdk.es145.js +7 -28
  148. package/dist/es/standards-sdk.es145.js.map +1 -1
  149. package/dist/es/standards-sdk.es146.js +70 -122
  150. package/dist/es/standards-sdk.es146.js.map +1 -1
  151. package/dist/es/standards-sdk.es147.js +58 -35
  152. package/dist/es/standards-sdk.es147.js.map +1 -1
  153. package/dist/es/standards-sdk.es148.js +30 -12482
  154. package/dist/es/standards-sdk.es148.js.map +1 -1
  155. package/dist/es/standards-sdk.es149.js +34 -242
  156. package/dist/es/standards-sdk.es149.js.map +1 -1
  157. package/dist/es/standards-sdk.es15.js +1 -1
  158. package/dist/es/standards-sdk.es150.js +41 -172
  159. package/dist/es/standards-sdk.es150.js.map +1 -1
  160. package/dist/es/standards-sdk.es151.js +115 -299
  161. package/dist/es/standards-sdk.es151.js.map +1 -1
  162. package/dist/es/standards-sdk.es152.js +36 -340
  163. package/dist/es/standards-sdk.es152.js.map +1 -1
  164. package/dist/es/standards-sdk.es153.js +12427 -398
  165. package/dist/es/standards-sdk.es153.js.map +1 -1
  166. package/dist/es/standards-sdk.es154.js +142 -301
  167. package/dist/es/standards-sdk.es154.js.map +1 -1
  168. package/dist/es/standards-sdk.es155.js +310 -64
  169. package/dist/es/standards-sdk.es155.js.map +1 -1
  170. package/dist/es/standards-sdk.es156.js +342 -13
  171. package/dist/es/standards-sdk.es156.js.map +1 -1
  172. package/dist/es/standards-sdk.es157.js +444 -64
  173. package/dist/es/standards-sdk.es157.js.map +1 -1
  174. package/dist/es/standards-sdk.es158.js +330 -55
  175. package/dist/es/standards-sdk.es158.js.map +1 -1
  176. package/dist/es/standards-sdk.es159.js +60 -68
  177. package/dist/es/standards-sdk.es159.js.map +1 -1
  178. package/dist/es/standards-sdk.es16.js +5 -5
  179. package/dist/es/standards-sdk.es160.js +14 -169
  180. package/dist/es/standards-sdk.es160.js.map +1 -1
  181. package/dist/es/standards-sdk.es161.js +179 -159
  182. package/dist/es/standards-sdk.es161.js.map +1 -1
  183. package/dist/es/standards-sdk.es162.js +49 -232
  184. package/dist/es/standards-sdk.es162.js.map +1 -1
  185. package/dist/es/standards-sdk.es163.js +71 -106
  186. package/dist/es/standards-sdk.es163.js.map +1 -1
  187. package/dist/es/standards-sdk.es164.js +70 -115
  188. package/dist/es/standards-sdk.es164.js.map +1 -1
  189. package/dist/es/standards-sdk.es165.js +60 -148
  190. package/dist/es/standards-sdk.es165.js.map +1 -1
  191. package/dist/es/standards-sdk.es166.js +149 -162
  192. package/dist/es/standards-sdk.es166.js.map +1 -1
  193. package/dist/es/standards-sdk.es167.js +195 -112
  194. package/dist/es/standards-sdk.es167.js.map +1 -1
  195. package/dist/es/standards-sdk.es168.js +208 -300
  196. package/dist/es/standards-sdk.es168.js.map +1 -1
  197. package/dist/es/standards-sdk.es169.js +106 -246
  198. package/dist/es/standards-sdk.es169.js.map +1 -1
  199. package/dist/es/standards-sdk.es170.js +107 -97
  200. package/dist/es/standards-sdk.es170.js.map +1 -1
  201. package/dist/es/standards-sdk.es171.js +164 -0
  202. package/dist/es/standards-sdk.es171.js.map +1 -0
  203. package/dist/es/standards-sdk.es172.js +188 -0
  204. package/dist/es/standards-sdk.es172.js.map +1 -0
  205. package/dist/es/standards-sdk.es173.js +142 -0
  206. package/dist/es/standards-sdk.es173.js.map +1 -0
  207. package/dist/es/standards-sdk.es174.js +334 -0
  208. package/dist/es/standards-sdk.es174.js.map +1 -0
  209. package/dist/es/standards-sdk.es175.js +262 -0
  210. package/dist/es/standards-sdk.es175.js.map +1 -0
  211. package/dist/es/standards-sdk.es176.js +119 -0
  212. package/dist/es/standards-sdk.es176.js.map +1 -0
  213. package/dist/es/standards-sdk.es18.js +12 -12
  214. package/dist/es/standards-sdk.es19.js +9 -9
  215. package/dist/es/standards-sdk.es2.js +2 -2
  216. package/dist/es/standards-sdk.es20.js +1 -1
  217. package/dist/es/standards-sdk.es21.js +1 -1
  218. package/dist/es/standards-sdk.es22.js +1 -1
  219. package/dist/es/standards-sdk.es23.js +1 -1
  220. package/dist/es/standards-sdk.es24.js +1 -1
  221. package/dist/es/standards-sdk.es25.js +1 -1
  222. package/dist/es/standards-sdk.es26.js +1 -1
  223. package/dist/es/standards-sdk.es27.js +12 -12
  224. package/dist/es/standards-sdk.es30.js +2 -2
  225. package/dist/es/standards-sdk.es31.js +4 -4
  226. package/dist/es/standards-sdk.es32.js +1 -1
  227. package/dist/es/standards-sdk.es35.js +6 -6
  228. package/dist/es/standards-sdk.es36.js +4 -4
  229. package/dist/es/standards-sdk.es37.js +2 -2
  230. package/dist/es/standards-sdk.es38.js +2 -2
  231. package/dist/es/standards-sdk.es39.js +1 -1
  232. package/dist/es/standards-sdk.es4.js +2 -2
  233. package/dist/es/standards-sdk.es40.js +1 -1
  234. package/dist/es/standards-sdk.es41.js +2 -2
  235. package/dist/es/standards-sdk.es46.js +1 -1
  236. package/dist/es/standards-sdk.es5.js +2 -2
  237. package/dist/es/standards-sdk.es51.js +1 -1
  238. package/dist/es/standards-sdk.es53.js +1 -1
  239. package/dist/es/standards-sdk.es56.js +2 -2
  240. package/dist/es/standards-sdk.es58.js +194 -13
  241. package/dist/es/standards-sdk.es58.js.map +1 -1
  242. package/dist/es/standards-sdk.es59.js +1 -1
  243. package/dist/es/standards-sdk.es6.js +2 -2
  244. package/dist/es/standards-sdk.es60.js +100 -192
  245. package/dist/es/standards-sdk.es60.js.map +1 -1
  246. package/dist/es/standards-sdk.es61.js +172 -24
  247. package/dist/es/standards-sdk.es61.js.map +1 -1
  248. package/dist/es/standards-sdk.es62.js +204 -77
  249. package/dist/es/standards-sdk.es62.js.map +1 -1
  250. package/dist/es/standards-sdk.es63.js +130 -3
  251. package/dist/es/standards-sdk.es63.js.map +1 -1
  252. package/dist/es/standards-sdk.es64.js +41 -95
  253. package/dist/es/standards-sdk.es64.js.map +1 -1
  254. package/dist/es/standards-sdk.es65.js +245 -88
  255. package/dist/es/standards-sdk.es65.js.map +1 -1
  256. package/dist/es/standards-sdk.es66.js +32 -17
  257. package/dist/es/standards-sdk.es66.js.map +1 -1
  258. package/dist/es/standards-sdk.es67.js +96 -77
  259. package/dist/es/standards-sdk.es67.js.map +1 -1
  260. package/dist/es/standards-sdk.es68.js +4 -458
  261. package/dist/es/standards-sdk.es68.js.map +1 -1
  262. package/dist/es/standards-sdk.es69.js +72 -295
  263. package/dist/es/standards-sdk.es69.js.map +1 -1
  264. package/dist/es/standards-sdk.es7.js +1 -1
  265. package/dist/es/standards-sdk.es70.js +86 -194
  266. package/dist/es/standards-sdk.es70.js.map +1 -1
  267. package/dist/es/standards-sdk.es71.js +16 -69
  268. package/dist/es/standards-sdk.es71.js.map +1 -1
  269. package/dist/es/standards-sdk.es72.js +69 -63
  270. package/dist/es/standards-sdk.es72.js.map +1 -1
  271. package/dist/es/standards-sdk.es73.js +458 -143
  272. package/dist/es/standards-sdk.es73.js.map +1 -1
  273. package/dist/es/standards-sdk.es74.js +298 -43
  274. package/dist/es/standards-sdk.es74.js.map +1 -1
  275. package/dist/es/standards-sdk.es75.js +174 -370
  276. package/dist/es/standards-sdk.es75.js.map +1 -1
  277. package/dist/es/standards-sdk.es76.js +71 -495
  278. package/dist/es/standards-sdk.es76.js.map +1 -1
  279. package/dist/es/standards-sdk.es77.js +71 -365
  280. package/dist/es/standards-sdk.es77.js.map +1 -1
  281. package/dist/es/standards-sdk.es78.js +137 -83
  282. package/dist/es/standards-sdk.es78.js.map +1 -1
  283. package/dist/es/standards-sdk.es79.js +69 -125
  284. package/dist/es/standards-sdk.es79.js.map +1 -1
  285. package/dist/es/standards-sdk.es80.js +402 -6
  286. package/dist/es/standards-sdk.es80.js.map +1 -1
  287. package/dist/es/standards-sdk.es81.js +492 -43
  288. package/dist/es/standards-sdk.es81.js.map +1 -1
  289. package/dist/es/standards-sdk.es82.js +350 -86
  290. package/dist/es/standards-sdk.es82.js.map +1 -1
  291. package/dist/es/standards-sdk.es83.js +88 -347
  292. package/dist/es/standards-sdk.es83.js.map +1 -1
  293. package/dist/es/standards-sdk.es84.js +125 -281
  294. package/dist/es/standards-sdk.es84.js.map +1 -1
  295. package/dist/es/standards-sdk.es85.js +6 -59
  296. package/dist/es/standards-sdk.es85.js.map +1 -1
  297. package/dist/es/standards-sdk.es86.js +43 -45
  298. package/dist/es/standards-sdk.es86.js.map +1 -1
  299. package/dist/es/standards-sdk.es87.js +86 -135
  300. package/dist/es/standards-sdk.es87.js.map +1 -1
  301. package/dist/es/standards-sdk.es88.js +333 -52
  302. package/dist/es/standards-sdk.es88.js.map +1 -1
  303. package/dist/es/standards-sdk.es89.js +277 -26
  304. package/dist/es/standards-sdk.es89.js.map +1 -1
  305. package/dist/es/standards-sdk.es9.js +2 -2
  306. package/dist/es/standards-sdk.es90.js +59 -23
  307. package/dist/es/standards-sdk.es90.js.map +1 -1
  308. package/dist/es/standards-sdk.es91.js +26 -217
  309. package/dist/es/standards-sdk.es91.js.map +1 -1
  310. package/dist/es/standards-sdk.es92.js +104 -236
  311. package/dist/es/standards-sdk.es92.js.map +1 -1
  312. package/dist/es/standards-sdk.es93.js +51 -141
  313. package/dist/es/standards-sdk.es93.js.map +1 -1
  314. package/dist/es/standards-sdk.es94.js +22 -137
  315. package/dist/es/standards-sdk.es94.js.map +1 -1
  316. package/dist/es/standards-sdk.es95.js +20 -44
  317. package/dist/es/standards-sdk.es95.js.map +1 -1
  318. package/dist/es/standards-sdk.es96.js +227 -252
  319. package/dist/es/standards-sdk.es96.js.map +1 -1
  320. package/dist/es/standards-sdk.es97.js +248 -68
  321. package/dist/es/standards-sdk.es97.js.map +1 -1
  322. package/dist/es/standards-sdk.es98.js +108 -52
  323. package/dist/es/standards-sdk.es98.js.map +1 -1
  324. package/dist/es/standards-sdk.es99.js +144 -29
  325. package/dist/es/standards-sdk.es99.js.map +1 -1
  326. package/package.json +13 -3
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es170.js","sources":["../../src/services/registry-broker/client/verification.ts"],"sourcesContent":["import type {\n JsonValue,\n MoltbookOwnerRegistrationUpdateRequest,\n MoltbookOwnerRegistrationUpdateResponse,\n RegisterStatusResponse,\n VerificationChallengeDetailsResponse,\n VerificationChallengeResponse,\n VerificationOwnershipResponse,\n VerificationStatusResponse,\n VerificationVerifyResponse,\n VerificationVerifySenderResponse,\n} from '../types';\nimport {\n moltbookOwnerRegistrationUpdateResponseSchema,\n registerStatusResponseSchema,\n verificationChallengeDetailsResponseSchema,\n verificationChallengeResponseSchema,\n verificationOwnershipResponseSchema,\n verificationStatusResponseSchema,\n verificationVerifyResponseSchema,\n verificationVerifySenderResponseSchema,\n} from '../schemas';\nimport type { RegistryBrokerClient } from './base-client';\n\nexport async function getVerificationStatus(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationStatusResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/status/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationStatusResponseSchema,\n 'verification status response',\n );\n}\n\nexport async function createVerificationChallenge(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationChallengeResponse> {\n const raw = await client.requestJson<JsonValue>('/verification/challenge', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: { uaid },\n });\n return client.parseWithSchema(\n raw,\n verificationChallengeResponseSchema,\n 'verification challenge response',\n );\n}\n\nexport async function getVerificationChallenge(\n client: RegistryBrokerClient,\n challengeId: string,\n): Promise<VerificationChallengeDetailsResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/challenge/${encodeURIComponent(challengeId)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationChallengeDetailsResponseSchema,\n 'verification challenge details response',\n );\n}\n\nexport async function verifyVerificationChallenge(\n client: RegistryBrokerClient,\n params: { challengeId: string; method?: 'moltbook-post' | string },\n): Promise<VerificationVerifyResponse> {\n const raw = await client.requestJson<JsonValue>('/verification/verify', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: {\n challengeId: params.challengeId,\n method: params.method ?? 'moltbook-post',\n },\n });\n return client.parseWithSchema(\n raw,\n verificationVerifyResponseSchema,\n 'verification verify response',\n );\n}\n\nexport async function getVerificationOwnership(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationOwnershipResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/ownership/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationOwnershipResponseSchema,\n 'verification ownership response',\n );\n}\n\nexport async function verifySenderOwnership(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationVerifySenderResponse> {\n const raw = await client.requestJson<JsonValue>(\n '/verification/verify-sender',\n {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: { uaid },\n },\n );\n return client.parseWithSchema(\n raw,\n verificationVerifySenderResponseSchema,\n 'verification sender response',\n );\n}\n\nexport async function getRegisterStatus(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<RegisterStatusResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/register/status/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n registerStatusResponseSchema,\n 'register status response',\n );\n}\n\nexport async function registerOwnedMoltbookAgent(\n client: RegistryBrokerClient,\n uaid: string,\n request: MoltbookOwnerRegistrationUpdateRequest,\n): Promise<MoltbookOwnerRegistrationUpdateResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/register/${encodeURIComponent(uaid)}`,\n {\n method: 'PUT',\n headers: { 'content-type': 'application/json' },\n body: {\n registered: request.registered ?? true,\n ...(request.name ? { name: request.name } : {}),\n ...(request.description ? { description: request.description } : {}),\n ...(request.endpoint ? { endpoint: request.endpoint } : {}),\n ...(request.metadata ? { metadata: request.metadata } : {}),\n },\n },\n );\n return client.parseWithSchema(\n raw,\n moltbookOwnerRegistrationUpdateResponseSchema,\n 'moltbook owner registration update response',\n );\n}\n"],"names":[],"mappings":";AAwBA,eAAsB,sBACpB,QACA,MACqC;AACrC,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,wBAAwB,mBAAmB,IAAI,CAAC;AAAA,IAChD,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,4BACpB,QACA,MACwC;AACxC,QAAM,MAAM,MAAM,OAAO,YAAuB,2BAA2B;AAAA,IACzE,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,IAC3B,MAAM,EAAE,KAAA;AAAA,EAAK,CACd;AACD,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,yBACpB,QACA,aAC+C;AAC/C,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,2BAA2B,mBAAmB,WAAW,CAAC;AAAA,IAC1D,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,4BACpB,QACA,QACqC;AACrC,QAAM,MAAM,MAAM,OAAO,YAAuB,wBAAwB;AAAA,IACtE,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,IAC3B,MAAM;AAAA,MACJ,aAAa,OAAO;AAAA,MACpB,QAAQ,OAAO,UAAU;AAAA,IAAA;AAAA,EAC3B,CACD;AACD,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,yBACpB,QACA,MACwC;AACxC,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,2BAA2B,mBAAmB,IAAI,CAAC;AAAA,IACnD,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,sBACpB,QACA,MAC2C;AAC3C,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,MAC3B,MAAM,EAAE,KAAA;AAAA,IAAK;AAAA,EACf;AAEF,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,kBACpB,QACA,MACiC;AACjC,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,oBAAoB,mBAAmB,IAAI,CAAC;AAAA,IAC5C,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,2BACpB,QACA,MACA,SACkD;AAClD,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,aAAa,mBAAmB,IAAI,CAAC;AAAA,IACrC;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,MAC3B,MAAM;AAAA,QACJ,YAAY,QAAQ,cAAc;AAAA,QAClC,GAAI,QAAQ,OAAO,EAAE,MAAM,QAAQ,KAAA,IAAS,CAAA;AAAA,QAC5C,GAAI,QAAQ,cAAc,EAAE,aAAa,QAAQ,YAAA,IAAgB,CAAA;AAAA,QACjE,GAAI,QAAQ,WAAW,EAAE,UAAU,QAAQ,SAAA,IAAa,CAAA;AAAA,QACxD,GAAI,QAAQ,WAAW,EAAE,UAAU,QAAQ,SAAA,IAAa,CAAA;AAAA,MAAC;AAAA,IAC3D;AAAA,EACF;AAEF,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"standards-sdk.es170.js","sources":["../../src/services/registry-broker/client/credits.ts"],"sourcesContent":["import type {\n CreditPurchaseResponse,\n JsonObject,\n JsonValue,\n X402CreditPurchaseResponse,\n X402MinimumsResponse,\n} from '../types';\nimport {\n creditPurchaseResponseSchema,\n x402CreditPurchaseResponseSchema,\n x402MinimumsResponseSchema,\n} from '../schemas';\nimport type { RegistryBrokerClient } from './base-client';\nimport { normalizeHexPrivateKey, type X402NetworkId } from './utils';\nimport { optionalImport } from '../../../utils/dynamic-import';\n\ntype PaymentHeaders = Record<string, string | string[] | undefined>;\ntype PaymentClient = {\n post: (\n url: string,\n body: JsonObject,\n ) => Promise<{ data: JsonValue; headers?: PaymentHeaders }>;\n};\n\nexport interface PurchaseCreditsWithX402Params {\n accountId: string;\n credits: number;\n usdAmount?: number;\n description?: string;\n metadata?: JsonObject;\n walletClient: object;\n}\n\nexport interface BuyCreditsWithX402Params {\n accountId: string;\n credits: number;\n usdAmount?: number;\n description?: string;\n metadata?: JsonObject;\n evmPrivateKey: string;\n network?: X402NetworkId;\n rpcUrl?: string;\n}\n\nexport type X402PurchaseResult = X402CreditPurchaseResponse & {\n paymentResponseHeader?: string;\n paymentResponse?: unknown;\n};\n\ntype LoadX402DependenciesResult = {\n createPaymentClient: (walletClient: object) => PaymentClient;\n decodePaymentResponse: (value: string) => unknown;\n createX402Signer: (\n network: X402NetworkId,\n privateKey: `0x${string}`,\n ) => Promise<object>;\n};\n\nasync function loadX402Dependencies(\n client: RegistryBrokerClient,\n): Promise<LoadX402DependenciesResult> {\n type X402AxiosModule = {\n withPaymentInterceptor: (client: unknown, walletClient: object) => unknown;\n decodeXPaymentResponse: (value: string) => unknown;\n };\n type X402TypesModule = {\n createSigner: (\n network: X402NetworkId,\n privateKey: `0x${string}`,\n ) => Promise<object>;\n };\n\n const [{ default: axios }, x402Axios, x402Types] = await Promise.all([\n import('axios'),\n optionalImport<X402AxiosModule>('x402-axios'),\n optionalImport<X402TypesModule>('x402/types'),\n ]);\n\n if (!x402Axios || !x402Types) {\n throw new Error(\n 'x402-axios and x402/types are required for X402 flows. Install them to enable ledger payments.',\n );\n }\n\n const withPaymentInterceptor = x402Axios.withPaymentInterceptor;\n const decodePaymentResponse = x402Axios.decodeXPaymentResponse;\n const createX402Signer = x402Types.createSigner;\n\n const createPaymentClient = (walletClient: object): PaymentClient => {\n const axiosClient = axios.create({\n baseURL: client.baseUrl,\n headers: {\n ...client.getDefaultHeaders(),\n 'content-type': 'application/json',\n },\n });\n const paymentClient = withPaymentInterceptor(axiosClient, walletClient);\n return paymentClient as PaymentClient;\n };\n\n return { createPaymentClient, decodePaymentResponse, createX402Signer };\n}\n\nfunction calculateHbarAmountParam(hbarAmount: number): number {\n const tinybars = Math.ceil(hbarAmount * 1e8);\n if (tinybars <= 0) {\n throw new Error('Calculated purchase amount must be positive');\n }\n return tinybars / 1e8;\n}\n\nexport async function purchaseCreditsWithHbar(\n client: RegistryBrokerClient,\n params: {\n accountId: string;\n privateKey: string;\n hbarAmount: number;\n memo?: string;\n metadata?: JsonObject;\n },\n): Promise<CreditPurchaseResponse> {\n const body: JsonObject = {\n accountId: params.accountId,\n payerKey: params.privateKey,\n hbarAmount: calculateHbarAmountParam(params.hbarAmount),\n };\n\n if (params.memo) {\n body.memo = params.memo;\n }\n\n if (params.metadata) {\n body.metadata = params.metadata;\n }\n\n const raw = await client.requestJson<JsonValue>('/credits/purchase', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body,\n });\n\n return client.parseWithSchema(\n raw,\n creditPurchaseResponseSchema,\n 'credit purchase response',\n );\n}\n\nexport async function getX402Minimums(\n client: RegistryBrokerClient,\n): Promise<X402MinimumsResponse> {\n const raw = await client.requestJson<JsonValue>(\n '/credits/purchase/x402/minimums',\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n x402MinimumsResponseSchema,\n 'x402 minimums response',\n );\n}\n\nexport async function purchaseCreditsWithX402(\n client: RegistryBrokerClient,\n params: PurchaseCreditsWithX402Params,\n): Promise<X402PurchaseResult> {\n const { createPaymentClient, decodePaymentResponse } =\n await loadX402Dependencies(client);\n\n if (!Number.isFinite(params.credits) || params.credits <= 0) {\n throw new Error('credits must be a positive number');\n }\n if (\n params.usdAmount !== undefined &&\n (!Number.isFinite(params.usdAmount) || params.usdAmount <= 0)\n ) {\n throw new Error('usdAmount must be a positive number when provided');\n }\n\n const body: JsonObject = {\n accountId: params.accountId,\n credits: params.credits,\n };\n\n if (params.usdAmount !== undefined) {\n body.usdAmount = params.usdAmount;\n }\n if (params.description) {\n body.description = params.description;\n }\n if (params.metadata) {\n body.metadata = params.metadata;\n }\n\n const paymentClient = createPaymentClient(params.walletClient);\n\n const response = await paymentClient.post('/credits/purchase/x402', body);\n\n const parsed = client.parseWithSchema(\n response.data,\n x402CreditPurchaseResponseSchema,\n 'x402 credit purchase response',\n );\n\n const responseHeaders = response.headers ?? {};\n const paymentHeader =\n typeof responseHeaders['x-payment-response'] === 'string'\n ? responseHeaders['x-payment-response']\n : undefined;\n const decodedPayment =\n paymentHeader !== undefined\n ? decodePaymentResponse(paymentHeader)\n : undefined;\n\n return {\n ...parsed,\n paymentResponseHeader: paymentHeader,\n paymentResponse: decodedPayment,\n };\n}\n\nexport async function buyCreditsWithX402(\n client: RegistryBrokerClient,\n params: BuyCreditsWithX402Params,\n): Promise<X402PurchaseResult> {\n const network: X402NetworkId = params.network ?? 'base';\n const { createX402Signer } = await loadX402Dependencies(client);\n const normalizedKey = normalizeHexPrivateKey(params.evmPrivateKey);\n const walletClient = await createX402Signer(network, normalizedKey);\n\n return purchaseCreditsWithX402(client, {\n accountId: params.accountId,\n credits: params.credits,\n usdAmount: params.usdAmount,\n description: params.description,\n metadata: params.metadata,\n walletClient,\n });\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,164 @@
1
+ import { resolveResponseSchema, registrationQuoteResponseSchema, registerAgentResponseSchema, registrationProgressResponseSchema, uaidValidationResponseSchema, uaidConnectionStatusSchema, dashboardStatsResponseSchema } from "./standards-sdk.es138.js";
2
+ import { serialiseAgentRegistrationRequest, DEFAULT_PROGRESS_INTERVAL_MS, DEFAULT_PROGRESS_TIMEOUT_MS, createAbortError } from "./standards-sdk.es168.js";
3
+ import { RegistryBrokerError } from "./standards-sdk.es139.js";
4
+ async function resolveUaid(client, uaid) {
5
+ const raw = await client.requestJson(
6
+ `/resolve/${encodeURIComponent(uaid)}`,
7
+ {
8
+ method: "GET"
9
+ }
10
+ );
11
+ return client.parseWithSchema(
12
+ raw,
13
+ resolveResponseSchema,
14
+ "resolve UAID response"
15
+ );
16
+ }
17
+ async function getRegistrationQuote(client, payload) {
18
+ const raw = await client.requestJson("/register/quote", {
19
+ method: "POST",
20
+ body: serialiseAgentRegistrationRequest(payload),
21
+ headers: { "content-type": "application/json" }
22
+ });
23
+ return client.parseWithSchema(
24
+ raw,
25
+ registrationQuoteResponseSchema,
26
+ "registration quote response"
27
+ );
28
+ }
29
+ async function updateAgent(client, uaid, payload) {
30
+ const raw = await client.requestJson(
31
+ `/register/${encodeURIComponent(uaid)}`,
32
+ {
33
+ method: "PUT",
34
+ body: serialiseAgentRegistrationRequest(payload),
35
+ headers: { "content-type": "application/json" }
36
+ }
37
+ );
38
+ return client.parseWithSchema(
39
+ raw,
40
+ registerAgentResponseSchema,
41
+ "update agent response"
42
+ );
43
+ }
44
+ async function getRegistrationProgress(client, attemptId) {
45
+ const normalisedAttemptId = attemptId.trim();
46
+ if (!normalisedAttemptId) {
47
+ throw new Error("attemptId is required");
48
+ }
49
+ try {
50
+ const raw = await client.requestJson(
51
+ `/register/progress/${encodeURIComponent(normalisedAttemptId)}`,
52
+ { method: "GET" }
53
+ );
54
+ const parsed = client.parseWithSchema(
55
+ raw,
56
+ registrationProgressResponseSchema,
57
+ "registration progress response"
58
+ );
59
+ return parsed.progress;
60
+ } catch (error) {
61
+ if (error instanceof RegistryBrokerError && error.status === 404) {
62
+ return null;
63
+ }
64
+ throw error;
65
+ }
66
+ }
67
+ async function waitForRegistrationCompletion(client, attemptId, options = {}) {
68
+ const normalisedAttemptId = attemptId.trim();
69
+ if (!normalisedAttemptId) {
70
+ throw new Error("attemptId is required");
71
+ }
72
+ const interval = Math.max(
73
+ 250,
74
+ options.intervalMs ?? DEFAULT_PROGRESS_INTERVAL_MS
75
+ );
76
+ const timeoutMs = options.timeoutMs ?? DEFAULT_PROGRESS_TIMEOUT_MS;
77
+ const throwOnFailure = options.throwOnFailure ?? true;
78
+ const signal = options.signal;
79
+ const startedAt = Date.now();
80
+ while (true) {
81
+ if (signal?.aborted) {
82
+ throw createAbortError();
83
+ }
84
+ const progress = await client.getRegistrationProgress(normalisedAttemptId);
85
+ if (progress) {
86
+ options.onProgress?.(progress);
87
+ if (progress.status === "completed") {
88
+ return progress;
89
+ }
90
+ if (progress.status === "partial" || progress.status === "failed") {
91
+ if (throwOnFailure) {
92
+ throw new RegistryBrokerError(
93
+ "Registration did not complete successfully",
94
+ {
95
+ status: 409,
96
+ statusText: progress.status,
97
+ body: progress
98
+ }
99
+ );
100
+ }
101
+ return progress;
102
+ }
103
+ }
104
+ if (Date.now() - startedAt >= timeoutMs) {
105
+ throw new Error(
106
+ `Registration progress polling timed out after ${timeoutMs}ms`
107
+ );
108
+ }
109
+ await client.delay(interval, signal);
110
+ }
111
+ }
112
+ async function validateUaid(client, uaid) {
113
+ const raw = await client.requestJson(
114
+ `/uaids/validate/${encodeURIComponent(uaid)}`,
115
+ {
116
+ method: "GET"
117
+ }
118
+ );
119
+ return client.parseWithSchema(
120
+ raw,
121
+ uaidValidationResponseSchema,
122
+ "UAID validation response"
123
+ );
124
+ }
125
+ async function getUaidConnectionStatus(client, uaid) {
126
+ const raw = await client.requestJson(
127
+ `/uaids/connections/${encodeURIComponent(uaid)}/status`,
128
+ {
129
+ method: "GET"
130
+ }
131
+ );
132
+ return client.parseWithSchema(
133
+ raw,
134
+ uaidConnectionStatusSchema,
135
+ "UAID connection status"
136
+ );
137
+ }
138
+ async function closeUaidConnection(client, uaid) {
139
+ await client.request(`/uaids/connections/${encodeURIComponent(uaid)}`, {
140
+ method: "DELETE"
141
+ });
142
+ }
143
+ async function dashboardStats(client) {
144
+ const raw = await client.requestJson("/dashboard/stats", {
145
+ method: "GET"
146
+ });
147
+ return client.parseWithSchema(
148
+ raw,
149
+ dashboardStatsResponseSchema,
150
+ "dashboard stats response"
151
+ );
152
+ }
153
+ export {
154
+ closeUaidConnection,
155
+ dashboardStats,
156
+ getRegistrationProgress,
157
+ getRegistrationQuote,
158
+ getUaidConnectionStatus,
159
+ resolveUaid,
160
+ updateAgent,
161
+ validateUaid,
162
+ waitForRegistrationCompletion
163
+ };
164
+ //# sourceMappingURL=standards-sdk.es171.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards-sdk.es171.js","sources":["../../src/services/registry-broker/client/agents.ts"],"sourcesContent":["import type {\n AgentRegistrationRequest,\n DashboardStatsResponse,\n JsonValue,\n RegisterAgentOptions,\n RegisterAgentQuoteResponse,\n RegisterAgentResponse,\n RegistrationProgressRecord,\n RegistrationProgressWaitOptions,\n ResolvedAgentResponse,\n UaidConnectionStatus,\n UaidValidationResponse,\n} from '../types';\nimport {\n dashboardStatsResponseSchema,\n registerAgentResponseSchema,\n registrationProgressResponseSchema,\n registrationQuoteResponseSchema,\n resolveResponseSchema,\n uaidConnectionStatusSchema,\n uaidValidationResponseSchema,\n} from '../schemas';\nimport type { RegistryBrokerClient } from './base-client';\nimport { purchaseCreditsWithHbar } from './credits';\nimport {\n createAbortError,\n DEFAULT_PROGRESS_INTERVAL_MS,\n DEFAULT_PROGRESS_TIMEOUT_MS,\n MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS,\n serialiseAgentRegistrationRequest,\n} from './utils';\nimport { RegistryBrokerError } from './errors';\n\nasync function performRegisterAgent(\n client: RegistryBrokerClient,\n payload: AgentRegistrationRequest,\n): Promise<RegisterAgentResponse> {\n const raw = await client.requestJson<JsonValue>('/register', {\n method: 'POST',\n body: serialiseAgentRegistrationRequest(payload),\n headers: { 'content-type': 'application/json' },\n });\n return client.parseWithSchema(\n raw,\n registerAgentResponseSchema,\n 'register agent response',\n );\n}\n\nfunction calculateHbarAmount(\n creditsToPurchase: number,\n creditsPerHbar: number,\n): number {\n if (creditsPerHbar <= 0) {\n throw new Error('creditsPerHbar must be positive');\n }\n if (creditsToPurchase <= 0) {\n throw new Error('creditsToPurchase must be positive');\n }\n const rawHbar = creditsToPurchase / creditsPerHbar;\n const tinybars = Math.ceil(rawHbar * 1e8);\n return tinybars / 1e8;\n}\n\nfunction resolveCreditsToPurchase(shortfallCredits: number): number {\n if (!Number.isFinite(shortfallCredits) || shortfallCredits <= 0) {\n return 0;\n }\n return Math.max(\n Math.ceil(shortfallCredits),\n MINIMUM_REGISTRATION_AUTO_TOP_UP_CREDITS,\n );\n}\n\nasync function ensureCreditsForRegistration(\n client: RegistryBrokerClient,\n payload: AgentRegistrationRequest,\n autoTopUp: RegisterAgentOptions['autoTopUp'],\n): Promise<void> {\n const details = autoTopUp ?? null;\n if (!details) {\n return;\n }\n\n if (!details.accountId || !details.accountId.trim()) {\n throw new Error('autoTopUp.accountId is required');\n }\n\n if (!details.privateKey || !details.privateKey.trim()) {\n throw new Error('autoTopUp.privateKey is required');\n }\n\n for (let attempt = 0; attempt < 3; attempt += 1) {\n const quote = await getRegistrationQuote(client, payload);\n const shortfall = quote.shortfallCredits ?? 0;\n if (shortfall <= 0) {\n return;\n }\n const creditsToPurchase = resolveCreditsToPurchase(shortfall);\n if (creditsToPurchase <= 0) {\n return;\n }\n\n const creditsPerHbar = quote.creditsPerHbar ?? null;\n if (!creditsPerHbar || creditsPerHbar <= 0) {\n throw new Error('Unable to determine credits per HBAR for auto top-up');\n }\n\n const hbarAmount = calculateHbarAmount(creditsToPurchase, creditsPerHbar);\n\n await purchaseCreditsWithHbar(client, {\n accountId: details.accountId.trim(),\n privateKey: details.privateKey.trim(),\n hbarAmount,\n memo: details.memo ?? 'Registry Broker auto top-up',\n metadata: {\n shortfallCredits: shortfall,\n requiredCredits: quote.requiredCredits,\n purchasedCredits: creditsToPurchase,\n },\n });\n }\n\n const finalQuote = await getRegistrationQuote(client, payload);\n if ((finalQuote.shortfallCredits ?? 0) > 0) {\n throw new Error('Unable to purchase sufficient credits for registration');\n }\n}\n\nexport async function resolveUaid(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<ResolvedAgentResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/resolve/${encodeURIComponent(uaid)}`,\n {\n method: 'GET',\n },\n );\n return client.parseWithSchema(\n raw,\n resolveResponseSchema,\n 'resolve UAID response',\n );\n}\n\nexport async function registerAgent(\n client: RegistryBrokerClient,\n payload: AgentRegistrationRequest,\n options?: RegisterAgentOptions,\n): Promise<RegisterAgentResponse> {\n const autoTopUp = options?.autoTopUp ?? client.registrationAutoTopUp;\n\n if (!autoTopUp) {\n return performRegisterAgent(client, payload);\n }\n\n await ensureCreditsForRegistration(client, payload, autoTopUp);\n\n let retried = false;\n while (true) {\n try {\n return await performRegisterAgent(client, payload);\n } catch (error) {\n const shortfall = client.extractInsufficientCreditsDetails(error);\n if (shortfall && !retried) {\n await ensureCreditsForRegistration(client, payload, autoTopUp);\n retried = true;\n continue;\n }\n throw error;\n }\n }\n}\n\nexport async function getRegistrationQuote(\n client: RegistryBrokerClient,\n payload: AgentRegistrationRequest,\n): Promise<RegisterAgentQuoteResponse> {\n const raw = await client.requestJson<JsonValue>('/register/quote', {\n method: 'POST',\n body: serialiseAgentRegistrationRequest(payload),\n headers: { 'content-type': 'application/json' },\n });\n\n return client.parseWithSchema(\n raw,\n registrationQuoteResponseSchema,\n 'registration quote response',\n );\n}\n\nexport async function updateAgent(\n client: RegistryBrokerClient,\n uaid: string,\n payload: AgentRegistrationRequest,\n): Promise<RegisterAgentResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/register/${encodeURIComponent(uaid)}`,\n {\n method: 'PUT',\n body: serialiseAgentRegistrationRequest(payload),\n headers: { 'content-type': 'application/json' },\n },\n );\n\n return client.parseWithSchema(\n raw,\n registerAgentResponseSchema,\n 'update agent response',\n );\n}\n\nexport async function getRegistrationProgress(\n client: RegistryBrokerClient,\n attemptId: string,\n): Promise<RegistrationProgressRecord | null> {\n const normalisedAttemptId = attemptId.trim();\n if (!normalisedAttemptId) {\n throw new Error('attemptId is required');\n }\n\n try {\n const raw = await client.requestJson<JsonValue>(\n `/register/progress/${encodeURIComponent(normalisedAttemptId)}`,\n { method: 'GET' },\n );\n\n const parsed = client.parseWithSchema(\n raw,\n registrationProgressResponseSchema,\n 'registration progress response',\n );\n\n return parsed.progress;\n } catch (error) {\n if (error instanceof RegistryBrokerError && error.status === 404) {\n return null;\n }\n throw error;\n }\n}\n\nexport async function waitForRegistrationCompletion(\n client: RegistryBrokerClient,\n attemptId: string,\n options: RegistrationProgressWaitOptions = {},\n): Promise<RegistrationProgressRecord> {\n const normalisedAttemptId = attemptId.trim();\n if (!normalisedAttemptId) {\n throw new Error('attemptId is required');\n }\n\n const interval = Math.max(\n 250,\n options.intervalMs ?? DEFAULT_PROGRESS_INTERVAL_MS,\n );\n const timeoutMs = options.timeoutMs ?? DEFAULT_PROGRESS_TIMEOUT_MS;\n const throwOnFailure = options.throwOnFailure ?? true;\n const signal = options.signal;\n const startedAt = Date.now();\n\n while (true) {\n if (signal?.aborted) {\n throw createAbortError();\n }\n\n const progress = await client.getRegistrationProgress(normalisedAttemptId);\n\n if (progress) {\n options.onProgress?.(progress);\n\n if (progress.status === 'completed') {\n return progress;\n }\n\n if (progress.status === 'partial' || progress.status === 'failed') {\n if (throwOnFailure) {\n throw new RegistryBrokerError(\n 'Registration did not complete successfully',\n {\n status: 409,\n statusText: progress.status,\n body: progress,\n },\n );\n }\n return progress;\n }\n }\n\n if (Date.now() - startedAt >= timeoutMs) {\n throw new Error(\n `Registration progress polling timed out after ${timeoutMs}ms`,\n );\n }\n\n await client.delay(interval, signal);\n }\n}\n\nexport async function validateUaid(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<UaidValidationResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/uaids/validate/${encodeURIComponent(uaid)}`,\n {\n method: 'GET',\n },\n );\n return client.parseWithSchema(\n raw,\n uaidValidationResponseSchema,\n 'UAID validation response',\n );\n}\n\nexport async function getUaidConnectionStatus(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<UaidConnectionStatus> {\n const raw = await client.requestJson<JsonValue>(\n `/uaids/connections/${encodeURIComponent(uaid)}/status`,\n {\n method: 'GET',\n },\n );\n return client.parseWithSchema(\n raw,\n uaidConnectionStatusSchema,\n 'UAID connection status',\n );\n}\n\nexport async function closeUaidConnection(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<void> {\n await client.request(`/uaids/connections/${encodeURIComponent(uaid)}`, {\n method: 'DELETE',\n });\n}\n\nexport async function dashboardStats(\n client: RegistryBrokerClient,\n): Promise<DashboardStatsResponse> {\n const raw = await client.requestJson<JsonValue>('/dashboard/stats', {\n method: 'GET',\n });\n return client.parseWithSchema(\n raw,\n dashboardStatsResponseSchema,\n 'dashboard stats response',\n );\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ import { Buffer } from "buffer";
2
+ import { ledgerChallengeResponseSchema, ledgerVerifyResponseSchema } from "./standards-sdk.es138.js";
3
+ import { canonicalizeLedgerNetwork } from "./standards-sdk.es140.js";
4
+ import { createPrivateKeySignerAsync } from "./standards-sdk.es141.js";
5
+ async function loadViemAccount(privateKey) {
6
+ try {
7
+ const viem = await import("viem/accounts");
8
+ return viem.privateKeyToAccount(privateKey);
9
+ } catch (error) {
10
+ const err = new Error(
11
+ 'EVM ledger authentication requires the optional dependency "viem". Install it to use evmPrivateKey flows.'
12
+ );
13
+ err.cause = error;
14
+ throw err;
15
+ }
16
+ }
17
+ async function resolveLedgerAuthSignature(message, options) {
18
+ if (typeof options.sign === "function") {
19
+ const result = await options.sign(message);
20
+ if (!result || typeof result.signature !== "string" || result.signature.length === 0) {
21
+ throw new Error("Custom ledger signer failed to produce a signature.");
22
+ }
23
+ return result;
24
+ }
25
+ if (!options.signer || typeof options.signer.sign !== "function") {
26
+ throw new Error(
27
+ "Ledger authentication requires a Hedera Signer or custom sign function."
28
+ );
29
+ }
30
+ const payload = Buffer.from(message, "utf8");
31
+ const signatures = await options.signer.sign([payload]);
32
+ const signatureEntry = signatures?.[0];
33
+ if (!signatureEntry) {
34
+ throw new Error("Signer did not return any signatures.");
35
+ }
36
+ let derivedPublicKey;
37
+ if (signatureEntry.publicKey) {
38
+ derivedPublicKey = signatureEntry.publicKey.toString();
39
+ } else if (typeof options.signer.getAccountKey === "function") {
40
+ const accountKey = await options.signer.getAccountKey();
41
+ if (accountKey && typeof accountKey.toString === "function") {
42
+ derivedPublicKey = accountKey.toString();
43
+ }
44
+ }
45
+ return {
46
+ signature: Buffer.from(signatureEntry.signature).toString("base64"),
47
+ signatureKind: "raw",
48
+ publicKey: derivedPublicKey
49
+ };
50
+ }
51
+ async function createLedgerChallenge(client, payload) {
52
+ const resolvedNetwork = canonicalizeLedgerNetwork(payload.network);
53
+ const network = resolvedNetwork.kind === "hedera" ? resolvedNetwork.hederaNetwork ?? resolvedNetwork.canonical : resolvedNetwork.canonical;
54
+ const raw = await client.requestJson("/auth/ledger/challenge", {
55
+ method: "POST",
56
+ headers: { "content-type": "application/json" },
57
+ body: {
58
+ accountId: payload.accountId,
59
+ network
60
+ }
61
+ });
62
+ return client.parseWithSchema(
63
+ raw,
64
+ ledgerChallengeResponseSchema,
65
+ "ledger challenge response"
66
+ );
67
+ }
68
+ async function verifyLedgerChallenge(client, payload) {
69
+ const resolvedNetwork = canonicalizeLedgerNetwork(payload.network);
70
+ const network = resolvedNetwork.kind === "hedera" ? resolvedNetwork.hederaNetwork ?? resolvedNetwork.canonical : resolvedNetwork.canonical;
71
+ const body = {
72
+ challengeId: payload.challengeId,
73
+ accountId: payload.accountId,
74
+ network,
75
+ signature: payload.signature
76
+ };
77
+ if (payload.signatureKind) {
78
+ body.signatureKind = payload.signatureKind;
79
+ }
80
+ if (payload.publicKey) {
81
+ body.publicKey = payload.publicKey;
82
+ }
83
+ if (typeof payload.expiresInMinutes === "number") {
84
+ body.expiresInMinutes = payload.expiresInMinutes;
85
+ }
86
+ const raw = await client.requestJson("/auth/ledger/verify", {
87
+ method: "POST",
88
+ headers: { "content-type": "application/json" },
89
+ body
90
+ });
91
+ const result = client.parseWithSchema(
92
+ raw,
93
+ ledgerVerifyResponseSchema,
94
+ "ledger verification response"
95
+ );
96
+ client.setLedgerApiKey(result.key);
97
+ return result;
98
+ }
99
+ async function authenticateWithLedger(client, options) {
100
+ const challenge = await client.createLedgerChallenge({
101
+ accountId: options.accountId,
102
+ network: options.network
103
+ });
104
+ const signed = await resolveLedgerAuthSignature(challenge.message, options);
105
+ const verification = await client.verifyLedgerChallenge({
106
+ challengeId: challenge.challengeId,
107
+ accountId: options.accountId,
108
+ network: options.network,
109
+ signature: signed.signature,
110
+ signatureKind: signed.signatureKind,
111
+ publicKey: signed.publicKey,
112
+ expiresInMinutes: options.expiresInMinutes
113
+ });
114
+ return verification;
115
+ }
116
+ async function authenticateWithLedgerCredentials(client, options) {
117
+ const {
118
+ accountId,
119
+ network,
120
+ signer,
121
+ sign,
122
+ hederaPrivateKey,
123
+ evmPrivateKey,
124
+ expiresInMinutes,
125
+ setAccountHeader = true,
126
+ label,
127
+ logger
128
+ } = options;
129
+ const resolvedNetwork = canonicalizeLedgerNetwork(network);
130
+ const labelSuffix = label ? ` for ${label}` : "";
131
+ const networkPayload = resolvedNetwork.canonical;
132
+ const authOptions = {
133
+ accountId,
134
+ network: networkPayload,
135
+ expiresInMinutes
136
+ };
137
+ if (sign) {
138
+ authOptions.sign = sign;
139
+ } else if (signer) {
140
+ authOptions.signer = signer;
141
+ } else if (hederaPrivateKey) {
142
+ if (resolvedNetwork.kind !== "hedera" || !resolvedNetwork.hederaNetwork) {
143
+ throw new Error(
144
+ "hederaPrivateKey can only be used with hedera:mainnet or hedera:testnet networks."
145
+ );
146
+ }
147
+ authOptions.signer = await createPrivateKeySignerAsync({
148
+ accountId,
149
+ privateKey: hederaPrivateKey,
150
+ network: resolvedNetwork.hederaNetwork
151
+ });
152
+ } else if (evmPrivateKey) {
153
+ if (resolvedNetwork.kind !== "evm") {
154
+ throw new Error(
155
+ "evmPrivateKey can only be used with CAIP-2 EVM networks (eip155:<chainId>)."
156
+ );
157
+ }
158
+ const formattedKey = evmPrivateKey.startsWith("0x") ? evmPrivateKey : `0x${evmPrivateKey}`;
159
+ const account = await loadViemAccount(formattedKey);
160
+ authOptions.sign = async (message) => ({
161
+ signature: await account.signMessage({ message }),
162
+ signatureKind: "evm",
163
+ publicKey: account.publicKey
164
+ });
165
+ } else {
166
+ throw new Error(
167
+ "Provide a signer, sign function, hederaPrivateKey, or evmPrivateKey to authenticate with the ledger."
168
+ );
169
+ }
170
+ logger?.info?.(
171
+ `Authenticating ledger account ${accountId} (${resolvedNetwork.canonical})${labelSuffix}...`
172
+ );
173
+ const verification = await client.authenticateWithLedger(authOptions);
174
+ if (setAccountHeader) {
175
+ client.setDefaultHeader("x-account-id", verification.accountId);
176
+ }
177
+ logger?.info?.(
178
+ `Ledger authentication complete${labelSuffix}. Issued key prefix: ${verification.apiKey.prefix}…${verification.apiKey.lastFour}`
179
+ );
180
+ return verification;
181
+ }
182
+ export {
183
+ authenticateWithLedger,
184
+ authenticateWithLedgerCredentials,
185
+ createLedgerChallenge,
186
+ verifyLedgerChallenge
187
+ };
188
+ //# sourceMappingURL=standards-sdk.es172.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards-sdk.es172.js","sources":["../../src/services/registry-broker/client/ledger-auth.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport type { SignerSignature } from '@hashgraph/sdk';\nimport type {\n JsonObject,\n JsonValue,\n LedgerAuthenticationOptions,\n LedgerAuthenticationSignerResult,\n LedgerChallengeRequest,\n LedgerChallengeResponse,\n LedgerCredentialAuthOptions,\n LedgerVerifyRequest,\n LedgerVerifyResponse,\n} from '../types';\nimport {\n ledgerChallengeResponseSchema,\n ledgerVerifyResponseSchema,\n} from '../schemas';\nimport { canonicalizeLedgerNetwork } from '../ledger-network';\nimport { createPrivateKeySignerAsync } from '../private-key-signer';\nimport type { RegistryBrokerClient } from './base-client';\n\nasync function loadViemAccount(privateKey: `0x${string}`): Promise<{\n publicKey: string;\n signMessage: (input: { message: string }) => Promise<string>;\n}> {\n try {\n const viem = await import('viem/accounts');\n return viem.privateKeyToAccount(privateKey);\n } catch (error) {\n const err = new Error(\n 'EVM ledger authentication requires the optional dependency \"viem\". Install it to use evmPrivateKey flows.',\n );\n (err as { cause?: unknown }).cause = error;\n throw err;\n }\n}\n\nasync function resolveLedgerAuthSignature(\n message: string,\n options: LedgerAuthenticationOptions,\n): Promise<LedgerAuthenticationSignerResult> {\n if (typeof options.sign === 'function') {\n const result = await options.sign(message);\n if (\n !result ||\n typeof result.signature !== 'string' ||\n result.signature.length === 0\n ) {\n throw new Error('Custom ledger signer failed to produce a signature.');\n }\n return result;\n }\n\n if (!options.signer || typeof options.signer.sign !== 'function') {\n throw new Error(\n 'Ledger authentication requires a Hedera Signer or custom sign function.',\n );\n }\n\n const payload = Buffer.from(message, 'utf8');\n const signatures: SignerSignature[] = await options.signer.sign([payload]);\n const signatureEntry = signatures?.[0];\n if (!signatureEntry) {\n throw new Error('Signer did not return any signatures.');\n }\n\n let derivedPublicKey: string | undefined;\n if (signatureEntry.publicKey) {\n derivedPublicKey = signatureEntry.publicKey.toString();\n } else if (typeof options.signer.getAccountKey === 'function') {\n const accountKey = await options.signer.getAccountKey();\n if (accountKey && typeof accountKey.toString === 'function') {\n derivedPublicKey = accountKey.toString();\n }\n }\n\n return {\n signature: Buffer.from(signatureEntry.signature).toString('base64'),\n signatureKind: 'raw',\n publicKey: derivedPublicKey,\n };\n}\n\nexport async function createLedgerChallenge(\n client: RegistryBrokerClient,\n payload: LedgerChallengeRequest,\n): Promise<LedgerChallengeResponse> {\n const resolvedNetwork = canonicalizeLedgerNetwork(payload.network);\n const network =\n resolvedNetwork.kind === 'hedera'\n ? (resolvedNetwork.hederaNetwork ?? resolvedNetwork.canonical)\n : resolvedNetwork.canonical;\n const raw = await client.requestJson<JsonValue>('/auth/ledger/challenge', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: {\n accountId: payload.accountId,\n network,\n },\n });\n\n return client.parseWithSchema(\n raw,\n ledgerChallengeResponseSchema,\n 'ledger challenge response',\n );\n}\n\nexport async function verifyLedgerChallenge(\n client: RegistryBrokerClient,\n payload: LedgerVerifyRequest,\n): Promise<LedgerVerifyResponse> {\n const resolvedNetwork = canonicalizeLedgerNetwork(payload.network);\n const network =\n resolvedNetwork.kind === 'hedera'\n ? (resolvedNetwork.hederaNetwork ?? resolvedNetwork.canonical)\n : resolvedNetwork.canonical;\n const body: JsonObject = {\n challengeId: payload.challengeId,\n accountId: payload.accountId,\n network,\n signature: payload.signature,\n };\n\n if (payload.signatureKind) {\n body.signatureKind = payload.signatureKind;\n }\n if (payload.publicKey) {\n body.publicKey = payload.publicKey;\n }\n if (typeof payload.expiresInMinutes === 'number') {\n body.expiresInMinutes = payload.expiresInMinutes;\n }\n\n const raw = await client.requestJson<JsonValue>('/auth/ledger/verify', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body,\n });\n\n const result = client.parseWithSchema(\n raw,\n ledgerVerifyResponseSchema,\n 'ledger verification response',\n );\n\n client.setLedgerApiKey(result.key);\n return result;\n}\n\nexport async function authenticateWithLedger(\n client: RegistryBrokerClient,\n options: LedgerAuthenticationOptions,\n): Promise<LedgerVerifyResponse> {\n const challenge = await client.createLedgerChallenge({\n accountId: options.accountId,\n network: options.network,\n });\n const signed = await resolveLedgerAuthSignature(challenge.message, options);\n const verification = await client.verifyLedgerChallenge({\n challengeId: challenge.challengeId,\n accountId: options.accountId,\n network: options.network,\n signature: signed.signature,\n signatureKind: signed.signatureKind,\n publicKey: signed.publicKey,\n expiresInMinutes: options.expiresInMinutes,\n });\n return verification;\n}\n\nexport async function authenticateWithLedgerCredentials(\n client: RegistryBrokerClient,\n options: LedgerCredentialAuthOptions,\n): Promise<LedgerVerifyResponse> {\n const {\n accountId,\n network,\n signer,\n sign,\n hederaPrivateKey,\n evmPrivateKey,\n expiresInMinutes,\n setAccountHeader = true,\n label,\n logger,\n } = options;\n\n const resolvedNetwork = canonicalizeLedgerNetwork(network);\n const labelSuffix = label ? ` for ${label}` : '';\n\n const networkPayload = resolvedNetwork.canonical;\n\n const authOptions: LedgerAuthenticationOptions = {\n accountId,\n network: networkPayload,\n expiresInMinutes,\n };\n\n if (sign) {\n authOptions.sign = sign;\n } else if (signer) {\n authOptions.signer = signer;\n } else if (hederaPrivateKey) {\n if (resolvedNetwork.kind !== 'hedera' || !resolvedNetwork.hederaNetwork) {\n throw new Error(\n 'hederaPrivateKey can only be used with hedera:mainnet or hedera:testnet networks.',\n );\n }\n authOptions.signer = await createPrivateKeySignerAsync({\n accountId,\n privateKey: hederaPrivateKey,\n network: resolvedNetwork.hederaNetwork,\n });\n } else if (evmPrivateKey) {\n if (resolvedNetwork.kind !== 'evm') {\n throw new Error(\n 'evmPrivateKey can only be used with CAIP-2 EVM networks (eip155:<chainId>).',\n );\n }\n const formattedKey = evmPrivateKey.startsWith('0x')\n ? (evmPrivateKey as `0x${string}`)\n : (`0x${evmPrivateKey}` as `0x${string}`);\n const account = await loadViemAccount(formattedKey);\n authOptions.sign = async message => ({\n signature: await account.signMessage({ message }),\n signatureKind: 'evm',\n publicKey: account.publicKey,\n });\n } else {\n throw new Error(\n 'Provide a signer, sign function, hederaPrivateKey, or evmPrivateKey to authenticate with the ledger.',\n );\n }\n\n logger?.info?.(\n `Authenticating ledger account ${accountId} (${resolvedNetwork.canonical})${labelSuffix}...`,\n );\n const verification = await client.authenticateWithLedger(authOptions);\n if (setAccountHeader) {\n client.setDefaultHeader('x-account-id', verification.accountId);\n }\n logger?.info?.(\n `Ledger authentication complete${labelSuffix}. Issued key prefix: ${verification.apiKey.prefix}…${verification.apiKey.lastFour}`,\n );\n return verification;\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ import { Buffer } from "buffer";
2
+ import { chatHistorySnapshotResponseSchema } from "./standards-sdk.es138.js";
3
+ function identitiesMatch(a, b) {
4
+ if (!a && !b) {
5
+ return true;
6
+ }
7
+ if (!a || !b) {
8
+ return false;
9
+ }
10
+ if (a.uaid && b.uaid && a.uaid.toLowerCase() === b.uaid.toLowerCase()) {
11
+ return true;
12
+ }
13
+ if (a.ledgerAccountId && b.ledgerAccountId && a.ledgerAccountId.toLowerCase() === b.ledgerAccountId.toLowerCase()) {
14
+ return true;
15
+ }
16
+ if (a.userId && b.userId && a.userId === b.userId) {
17
+ return true;
18
+ }
19
+ if (a.email && b.email && a.email.toLowerCase() === b.email.toLowerCase()) {
20
+ return true;
21
+ }
22
+ return false;
23
+ }
24
+ async function fetchHistorySnapshot(conversationContexts, client, sessionId, options) {
25
+ if (!sessionId || sessionId.trim().length === 0) {
26
+ throw new Error("sessionId is required to fetch chat history");
27
+ }
28
+ const raw = await client.requestJson(
29
+ `/chat/session/${encodeURIComponent(sessionId)}/history`,
30
+ {
31
+ method: "GET"
32
+ }
33
+ );
34
+ const snapshot = client.parseWithSchema(
35
+ raw,
36
+ chatHistorySnapshotResponseSchema,
37
+ "chat history snapshot response"
38
+ );
39
+ return attachDecryptedHistory(
40
+ conversationContexts,
41
+ client,
42
+ sessionId,
43
+ snapshot,
44
+ options
45
+ );
46
+ }
47
+ function attachDecryptedHistory(conversationContexts, client, sessionId, snapshot, options) {
48
+ const shouldDecrypt = options?.decrypt !== void 0 ? options.decrypt : client.encryptionOptions?.autoDecryptHistory === true;
49
+ if (!shouldDecrypt) {
50
+ return snapshot;
51
+ }
52
+ const requiresContext = snapshot.history.some(
53
+ (entry) => Boolean(entry.cipherEnvelope)
54
+ );
55
+ if (!requiresContext) {
56
+ return {
57
+ ...snapshot,
58
+ decryptedHistory: snapshot.history.map((entry) => ({
59
+ entry,
60
+ plaintext: entry.content
61
+ }))
62
+ };
63
+ }
64
+ const context = resolveDecryptionContext(
65
+ conversationContexts,
66
+ client,
67
+ sessionId,
68
+ options
69
+ );
70
+ if (!context) {
71
+ throw new Error(
72
+ "Unable to decrypt chat history: encryption context unavailable"
73
+ );
74
+ }
75
+ const decryptedHistory = snapshot.history.map((entry) => ({
76
+ entry,
77
+ plaintext: decryptHistoryEntryFromContext(client, entry, context)
78
+ }));
79
+ return { ...snapshot, decryptedHistory };
80
+ }
81
+ function registerConversationContextForEncryption(conversationContexts, context) {
82
+ const normalized = {
83
+ sessionId: context.sessionId,
84
+ sharedSecret: Buffer.from(context.sharedSecret),
85
+ identity: context.identity ? { ...context.identity } : void 0
86
+ };
87
+ const entries = conversationContexts.get(context.sessionId) ?? [];
88
+ const existingIndex = entries.findIndex(
89
+ (existing) => identitiesMatch(existing.identity, normalized.identity)
90
+ );
91
+ if (existingIndex >= 0) {
92
+ entries[existingIndex] = normalized;
93
+ } else {
94
+ entries.push(normalized);
95
+ }
96
+ conversationContexts.set(context.sessionId, entries);
97
+ }
98
+ function resolveDecryptionContext(conversationContexts, client, sessionId, options) {
99
+ if (options?.sharedSecret) {
100
+ return {
101
+ sessionId,
102
+ sharedSecret: client.normalizeSharedSecret(options.sharedSecret),
103
+ identity: options.identity
104
+ };
105
+ }
106
+ const contexts = conversationContexts.get(sessionId);
107
+ if (!contexts || contexts.length === 0) {
108
+ return null;
109
+ }
110
+ if (options?.identity) {
111
+ const match = contexts.find(
112
+ (context) => identitiesMatch(context.identity, options.identity)
113
+ );
114
+ if (match) {
115
+ return match;
116
+ }
117
+ }
118
+ return contexts[0];
119
+ }
120
+ function decryptHistoryEntryFromContext(client, entry, context) {
121
+ const envelope = entry.cipherEnvelope;
122
+ if (!envelope) {
123
+ return entry.content;
124
+ }
125
+ const secret = Buffer.from(context.sharedSecret);
126
+ try {
127
+ return client.encryption.decryptCipherEnvelope({
128
+ envelope,
129
+ sharedSecret: secret
130
+ });
131
+ } catch (_error) {
132
+ return null;
133
+ }
134
+ }
135
+ export {
136
+ attachDecryptedHistory,
137
+ decryptHistoryEntryFromContext,
138
+ fetchHistorySnapshot,
139
+ registerConversationContextForEncryption,
140
+ resolveDecryptionContext
141
+ };
142
+ //# sourceMappingURL=standards-sdk.es173.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standards-sdk.es173.js","sources":["../../src/services/registry-broker/client/chat-history.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport type {\n ChatHistoryEntry,\n ChatHistoryFetchOptions,\n ChatHistorySnapshotResponse,\n ChatHistorySnapshotWithDecryptedEntries,\n JsonValue,\n RecipientIdentity,\n} from '../types';\nimport { chatHistorySnapshotResponseSchema } from '../schemas';\nimport type { RegistryBrokerClient } from './base-client';\n\nexport interface ConversationContextInput {\n sessionId: string;\n sharedSecret: Uint8Array | Buffer;\n identity?: RecipientIdentity;\n}\n\nexport interface ConversationContextState {\n sessionId: string;\n sharedSecret: Buffer;\n identity?: RecipientIdentity;\n}\n\nfunction identitiesMatch(\n a?: RecipientIdentity,\n b?: RecipientIdentity,\n): boolean {\n if (!a && !b) {\n return true;\n }\n if (!a || !b) {\n return false;\n }\n if (a.uaid && b.uaid && a.uaid.toLowerCase() === b.uaid.toLowerCase()) {\n return true;\n }\n if (\n a.ledgerAccountId &&\n b.ledgerAccountId &&\n a.ledgerAccountId.toLowerCase() === b.ledgerAccountId.toLowerCase()\n ) {\n return true;\n }\n if (a.userId && b.userId && a.userId === b.userId) {\n return true;\n }\n if (a.email && b.email && a.email.toLowerCase() === b.email.toLowerCase()) {\n return true;\n }\n return false;\n}\n\nexport async function fetchHistorySnapshot(\n conversationContexts: Map<string, ConversationContextState[]>,\n client: RegistryBrokerClient,\n sessionId: string,\n options?: ChatHistoryFetchOptions,\n): Promise<ChatHistorySnapshotWithDecryptedEntries> {\n if (!sessionId || sessionId.trim().length === 0) {\n throw new Error('sessionId is required to fetch chat history');\n }\n const raw = await client.requestJson<JsonValue>(\n `/chat/session/${encodeURIComponent(sessionId)}/history`,\n {\n method: 'GET',\n },\n );\n const snapshot = client.parseWithSchema(\n raw,\n chatHistorySnapshotResponseSchema,\n 'chat history snapshot response',\n );\n return attachDecryptedHistory(\n conversationContexts,\n client,\n sessionId,\n snapshot,\n options,\n );\n}\n\nexport function attachDecryptedHistory(\n conversationContexts: Map<string, ConversationContextState[]>,\n client: RegistryBrokerClient,\n sessionId: string,\n snapshot: ChatHistorySnapshotResponse,\n options?: ChatHistoryFetchOptions,\n): ChatHistorySnapshotWithDecryptedEntries {\n const shouldDecrypt =\n options?.decrypt !== undefined\n ? options.decrypt\n : client.encryptionOptions?.autoDecryptHistory === true;\n if (!shouldDecrypt) {\n return snapshot;\n }\n const requiresContext = snapshot.history.some(entry =>\n Boolean(entry.cipherEnvelope),\n );\n if (!requiresContext) {\n return {\n ...snapshot,\n decryptedHistory: snapshot.history.map(entry => ({\n entry,\n plaintext: entry.content,\n })),\n };\n }\n const context = resolveDecryptionContext(\n conversationContexts,\n client,\n sessionId,\n options,\n );\n if (!context) {\n throw new Error(\n 'Unable to decrypt chat history: encryption context unavailable',\n );\n }\n const decryptedHistory = snapshot.history.map(entry => ({\n entry,\n plaintext: decryptHistoryEntryFromContext(client, entry, context),\n }));\n return { ...snapshot, decryptedHistory };\n}\n\nexport function registerConversationContextForEncryption(\n conversationContexts: Map<string, ConversationContextState[]>,\n context: ConversationContextInput,\n): void {\n const normalized: ConversationContextState = {\n sessionId: context.sessionId,\n sharedSecret: Buffer.from(context.sharedSecret),\n identity: context.identity ? { ...context.identity } : undefined,\n };\n const entries = conversationContexts.get(context.sessionId) ?? [];\n const existingIndex = entries.findIndex(existing =>\n identitiesMatch(existing.identity, normalized.identity),\n );\n if (existingIndex >= 0) {\n entries[existingIndex] = normalized;\n } else {\n entries.push(normalized);\n }\n conversationContexts.set(context.sessionId, entries);\n}\n\nexport function resolveDecryptionContext(\n conversationContexts: Map<string, ConversationContextState[]>,\n client: RegistryBrokerClient,\n sessionId: string,\n options?: ChatHistoryFetchOptions,\n): ConversationContextState | null {\n if (options?.sharedSecret) {\n return {\n sessionId,\n sharedSecret: client.normalizeSharedSecret(options.sharedSecret),\n identity: options.identity,\n };\n }\n const contexts = conversationContexts.get(sessionId);\n if (!contexts || contexts.length === 0) {\n return null;\n }\n if (options?.identity) {\n const match = contexts.find(context =>\n identitiesMatch(context.identity, options.identity),\n );\n if (match) {\n return match;\n }\n }\n return contexts[0];\n}\n\nexport function decryptHistoryEntryFromContext(\n client: RegistryBrokerClient,\n entry: ChatHistoryEntry,\n context: ConversationContextState,\n): string | null {\n const envelope = entry.cipherEnvelope;\n if (!envelope) {\n return entry.content;\n }\n const secret = Buffer.from(context.sharedSecret);\n try {\n return client.encryption.decryptCipherEnvelope({\n envelope,\n sharedSecret: secret,\n });\n } catch (_error) {\n return null;\n }\n}\n"],"names":[],"mappings":"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"}