@hashgraphonline/standards-sdk 0.1.144 → 0.1.146

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 (433) hide show
  1. package/dist/cjs/hcs-10/base-client.d.ts.map +1 -1
  2. package/dist/cjs/hcs-10/sdk.d.ts +8 -0
  3. package/dist/cjs/hcs-10/sdk.d.ts.map +1 -1
  4. package/dist/cjs/hcs-11/client.d.ts +2 -2
  5. package/dist/cjs/hcs-11/client.d.ts.map +1 -1
  6. package/dist/cjs/hcs-11/person-builder.d.ts +1 -0
  7. package/dist/cjs/hcs-11/person-builder.d.ts.map +1 -1
  8. package/dist/cjs/hcs-11/types.d.ts +1 -0
  9. package/dist/cjs/hcs-11/types.d.ts.map +1 -1
  10. package/dist/cjs/hcs-12/rendering/resource-manager.d.ts.map +1 -1
  11. package/dist/cjs/hcs-14/issuers/hiero.d.ts.map +1 -1
  12. package/dist/cjs/hcs-15/browser.d.ts +2 -0
  13. package/dist/cjs/hcs-15/browser.d.ts.map +1 -1
  14. package/dist/cjs/hcs-15/sdk.d.ts +7 -1
  15. package/dist/cjs/hcs-15/sdk.d.ts.map +1 -1
  16. package/dist/cjs/hcs-15/tx.d.ts +4 -0
  17. package/dist/cjs/hcs-15/tx.d.ts.map +1 -1
  18. package/dist/cjs/hcs-15/types.d.ts +16 -1
  19. package/dist/cjs/hcs-15/types.d.ts.map +1 -1
  20. package/dist/cjs/hcs-16/browser.d.ts +11 -2
  21. package/dist/cjs/hcs-16/browser.d.ts.map +1 -1
  22. package/dist/cjs/hcs-16/sdk.d.ts +62 -1
  23. package/dist/cjs/hcs-16/sdk.d.ts.map +1 -1
  24. package/dist/cjs/hcs-16/tx.d.ts +21 -3
  25. package/dist/cjs/hcs-16/tx.d.ts.map +1 -1
  26. package/dist/cjs/hcs-17/base-client.d.ts +1 -0
  27. package/dist/cjs/hcs-17/base-client.d.ts.map +1 -1
  28. package/dist/cjs/hcs-17/sdk.d.ts.map +1 -1
  29. package/dist/cjs/hcs-17/tx.d.ts +2 -0
  30. package/dist/cjs/hcs-17/tx.d.ts.map +1 -1
  31. package/dist/cjs/hcs-17/types.d.ts +4 -0
  32. package/dist/cjs/hcs-17/types.d.ts.map +1 -1
  33. package/dist/cjs/hcs-7/types.d.ts +4 -4
  34. package/dist/cjs/index.d.ts.map +1 -1
  35. package/dist/cjs/inscribe/inscriber.d.ts +89 -0
  36. package/dist/cjs/inscribe/inscriber.d.ts.map +1 -1
  37. package/dist/cjs/services/registry-broker/client/base-client.d.ts +14 -1
  38. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
  39. package/dist/cjs/services/registry-broker/client/feedback.d.ts +2 -0
  40. package/dist/cjs/services/registry-broker/client/feedback.d.ts.map +1 -0
  41. package/dist/cjs/services/registry-broker/hol-chat-ops.d.ts +24 -0
  42. package/dist/cjs/services/registry-broker/hol-chat-ops.d.ts.map +1 -0
  43. package/dist/cjs/services/registry-broker/index.d.ts +1 -0
  44. package/dist/cjs/services/registry-broker/index.d.ts.map +1 -1
  45. package/dist/cjs/services/registry-broker/private-key-signer.d.ts +1 -0
  46. package/dist/cjs/services/registry-broker/private-key-signer.d.ts.map +1 -1
  47. package/dist/cjs/services/registry-broker/schemas.d.ts +1001 -577
  48. package/dist/cjs/services/registry-broker/schemas.d.ts.map +1 -1
  49. package/dist/cjs/services/registry-broker/types.d.ts +20 -1
  50. package/dist/cjs/services/registry-broker/types.d.ts.map +1 -1
  51. package/dist/cjs/standards-sdk.cjs +3 -3
  52. package/dist/cjs/standards-sdk.cjs.map +1 -1
  53. package/dist/cjs/utils/crypto-abstraction.d.ts.map +1 -1
  54. package/dist/cjs/utils/crypto-env.d.ts.map +1 -1
  55. package/dist/cjs/utils/dynamic-import.d.ts +5 -1
  56. package/dist/cjs/utils/dynamic-import.d.ts.map +1 -1
  57. package/dist/cjs/utils/hash-adapter.d.ts.map +1 -1
  58. package/dist/es/hcs-10/base-client.d.ts.map +1 -1
  59. package/dist/es/hcs-10/sdk.d.ts +8 -0
  60. package/dist/es/hcs-10/sdk.d.ts.map +1 -1
  61. package/dist/es/hcs-11/client.d.ts +2 -2
  62. package/dist/es/hcs-11/client.d.ts.map +1 -1
  63. package/dist/es/hcs-11/person-builder.d.ts +1 -0
  64. package/dist/es/hcs-11/person-builder.d.ts.map +1 -1
  65. package/dist/es/hcs-11/types.d.ts +1 -0
  66. package/dist/es/hcs-11/types.d.ts.map +1 -1
  67. package/dist/es/hcs-12/rendering/resource-manager.d.ts.map +1 -1
  68. package/dist/es/hcs-14/issuers/hiero.d.ts.map +1 -1
  69. package/dist/es/hcs-15/browser.d.ts +2 -0
  70. package/dist/es/hcs-15/browser.d.ts.map +1 -1
  71. package/dist/es/hcs-15/sdk.d.ts +7 -1
  72. package/dist/es/hcs-15/sdk.d.ts.map +1 -1
  73. package/dist/es/hcs-15/tx.d.ts +4 -0
  74. package/dist/es/hcs-15/tx.d.ts.map +1 -1
  75. package/dist/es/hcs-15/types.d.ts +16 -1
  76. package/dist/es/hcs-15/types.d.ts.map +1 -1
  77. package/dist/es/hcs-16/browser.d.ts +11 -2
  78. package/dist/es/hcs-16/browser.d.ts.map +1 -1
  79. package/dist/es/hcs-16/sdk.d.ts +62 -1
  80. package/dist/es/hcs-16/sdk.d.ts.map +1 -1
  81. package/dist/es/hcs-16/tx.d.ts +21 -3
  82. package/dist/es/hcs-16/tx.d.ts.map +1 -1
  83. package/dist/es/hcs-17/base-client.d.ts +1 -0
  84. package/dist/es/hcs-17/base-client.d.ts.map +1 -1
  85. package/dist/es/hcs-17/sdk.d.ts.map +1 -1
  86. package/dist/es/hcs-17/tx.d.ts +2 -0
  87. package/dist/es/hcs-17/tx.d.ts.map +1 -1
  88. package/dist/es/hcs-17/types.d.ts +4 -0
  89. package/dist/es/hcs-17/types.d.ts.map +1 -1
  90. package/dist/es/hcs-7/types.d.ts +4 -4
  91. package/dist/es/index.d.ts.map +1 -1
  92. package/dist/es/inscribe/inscriber.d.ts +89 -0
  93. package/dist/es/inscribe/inscriber.d.ts.map +1 -1
  94. package/dist/es/services/registry-broker/client/base-client.d.ts +14 -1
  95. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
  96. package/dist/es/services/registry-broker/client/feedback.d.ts +2 -0
  97. package/dist/es/services/registry-broker/client/feedback.d.ts.map +1 -0
  98. package/dist/es/services/registry-broker/hol-chat-ops.d.ts +24 -0
  99. package/dist/es/services/registry-broker/hol-chat-ops.d.ts.map +1 -0
  100. package/dist/es/services/registry-broker/index.d.ts +1 -0
  101. package/dist/es/services/registry-broker/index.d.ts.map +1 -1
  102. package/dist/es/services/registry-broker/private-key-signer.d.ts +1 -0
  103. package/dist/es/services/registry-broker/private-key-signer.d.ts.map +1 -1
  104. package/dist/es/services/registry-broker/schemas.d.ts +1001 -577
  105. package/dist/es/services/registry-broker/schemas.d.ts.map +1 -1
  106. package/dist/es/services/registry-broker/types.d.ts +20 -1
  107. package/dist/es/services/registry-broker/types.d.ts.map +1 -1
  108. package/dist/es/standards-sdk.es.js +146 -131
  109. package/dist/es/standards-sdk.es10.js +70 -90
  110. package/dist/es/standards-sdk.es10.js.map +1 -1
  111. package/dist/es/standards-sdk.es100.js +229 -26
  112. package/dist/es/standards-sdk.es100.js.map +1 -1
  113. package/dist/es/standards-sdk.es101.js +109 -228
  114. package/dist/es/standards-sdk.es101.js.map +1 -1
  115. package/dist/es/standards-sdk.es102.js +15 -94
  116. package/dist/es/standards-sdk.es102.js.map +1 -1
  117. package/dist/es/standards-sdk.es103.js +80 -30
  118. package/dist/es/standards-sdk.es103.js.map +1 -1
  119. package/dist/es/standards-sdk.es104.js +27 -80
  120. package/dist/es/standards-sdk.es104.js.map +1 -1
  121. package/dist/es/standards-sdk.es105.js +136 -25
  122. package/dist/es/standards-sdk.es105.js.map +1 -1
  123. package/dist/es/standards-sdk.es106.js +27 -140
  124. package/dist/es/standards-sdk.es106.js.map +1 -1
  125. package/dist/es/standards-sdk.es107.js +20 -27
  126. package/dist/es/standards-sdk.es107.js.map +1 -1
  127. package/dist/es/standards-sdk.es108.js +156 -18
  128. package/dist/es/standards-sdk.es108.js.map +1 -1
  129. package/dist/es/standards-sdk.es109.js +198 -148
  130. package/dist/es/standards-sdk.es109.js.map +1 -1
  131. package/dist/es/standards-sdk.es11.js +121 -45
  132. package/dist/es/standards-sdk.es11.js.map +1 -1
  133. package/dist/es/standards-sdk.es110.js +747 -166
  134. package/dist/es/standards-sdk.es110.js.map +1 -1
  135. package/dist/es/standards-sdk.es111.js +9 -786
  136. package/dist/es/standards-sdk.es111.js.map +1 -1
  137. package/dist/es/standards-sdk.es112.js +567 -13
  138. package/dist/es/standards-sdk.es112.js.map +1 -1
  139. package/dist/es/standards-sdk.es113.js +576 -541
  140. package/dist/es/standards-sdk.es113.js.map +1 -1
  141. package/dist/es/standards-sdk.es114.js +12 -601
  142. package/dist/es/standards-sdk.es114.js.map +1 -1
  143. package/dist/es/standards-sdk.es115.js +2 -13
  144. package/dist/es/standards-sdk.es115.js.map +1 -1
  145. package/dist/es/standards-sdk.es116.js +87 -2
  146. package/dist/es/standards-sdk.es116.js.map +1 -1
  147. package/dist/es/standards-sdk.es117.js +37 -80
  148. package/dist/es/standards-sdk.es117.js.map +1 -1
  149. package/dist/es/standards-sdk.es118.js +2 -39
  150. package/dist/es/standards-sdk.es118.js.map +1 -1
  151. package/dist/es/standards-sdk.es119.js +231 -2
  152. package/dist/es/standards-sdk.es119.js.map +1 -1
  153. package/dist/es/standards-sdk.es12.js +60 -159
  154. package/dist/es/standards-sdk.es12.js.map +1 -1
  155. package/dist/es/standards-sdk.es120.js +1110 -193
  156. package/dist/es/standards-sdk.es120.js.map +1 -1
  157. package/dist/es/standards-sdk.es121.js +225 -1059
  158. package/dist/es/standards-sdk.es121.js.map +1 -1
  159. package/dist/es/standards-sdk.es122.js +419 -303
  160. package/dist/es/standards-sdk.es122.js.map +1 -1
  161. package/dist/es/standards-sdk.es123.js +351 -418
  162. package/dist/es/standards-sdk.es123.js.map +1 -1
  163. package/dist/es/standards-sdk.es124.js +1109 -347
  164. package/dist/es/standards-sdk.es124.js.map +1 -1
  165. package/dist/es/standards-sdk.es125.js +182 -854
  166. package/dist/es/standards-sdk.es125.js.map +1 -1
  167. package/dist/es/standards-sdk.es126.js +1512 -153
  168. package/dist/es/standards-sdk.es126.js.map +1 -1
  169. package/dist/es/standards-sdk.es127.js +157 -1547
  170. package/dist/es/standards-sdk.es127.js.map +1 -1
  171. package/dist/es/standards-sdk.es128.js +192 -162
  172. package/dist/es/standards-sdk.es128.js.map +1 -1
  173. package/dist/es/standards-sdk.es129.js +61 -164
  174. package/dist/es/standards-sdk.es129.js.map +1 -1
  175. package/dist/es/standards-sdk.es13.js +200 -60
  176. package/dist/es/standards-sdk.es13.js.map +1 -1
  177. package/dist/es/standards-sdk.es130.js +102 -85
  178. package/dist/es/standards-sdk.es130.js.map +1 -1
  179. package/dist/es/standards-sdk.es131.js +222 -96
  180. package/dist/es/standards-sdk.es131.js.map +1 -1
  181. package/dist/es/standards-sdk.es132.js +153 -220
  182. package/dist/es/standards-sdk.es132.js.map +1 -1
  183. package/dist/es/standards-sdk.es133.js +104 -162
  184. package/dist/es/standards-sdk.es133.js.map +1 -1
  185. package/dist/es/standards-sdk.es134.js +296 -92
  186. package/dist/es/standards-sdk.es134.js.map +1 -1
  187. package/dist/es/standards-sdk.es135.js +432 -294
  188. package/dist/es/standards-sdk.es135.js.map +1 -1
  189. package/dist/es/standards-sdk.es136.js +14 -363
  190. package/dist/es/standards-sdk.es136.js.map +1 -1
  191. package/dist/es/standards-sdk.es137.js +79 -15
  192. package/dist/es/standards-sdk.es137.js.map +1 -1
  193. package/dist/es/standards-sdk.es138.js +79 -59
  194. package/dist/es/standards-sdk.es138.js.map +1 -1
  195. package/dist/es/standards-sdk.es139.js +53 -80
  196. package/dist/es/standards-sdk.es139.js.map +1 -1
  197. package/dist/es/standards-sdk.es14.js +149 -178
  198. package/dist/es/standards-sdk.es14.js.map +1 -1
  199. package/dist/es/standards-sdk.es140.js +1 -1
  200. package/dist/es/standards-sdk.es142.js +1 -1
  201. package/dist/es/standards-sdk.es143.js +1 -1
  202. package/dist/es/standards-sdk.es144.js +30 -28
  203. package/dist/es/standards-sdk.es144.js.map +1 -1
  204. package/dist/es/standards-sdk.es145.js +34 -138
  205. package/dist/es/standards-sdk.es145.js.map +1 -1
  206. package/dist/es/standards-sdk.es146.js +28 -42
  207. package/dist/es/standards-sdk.es146.js.map +1 -1
  208. package/dist/es/standards-sdk.es147.js +939 -12269
  209. package/dist/es/standards-sdk.es147.js.map +1 -1
  210. package/dist/es/standards-sdk.es148.js +12284 -12
  211. package/dist/es/standards-sdk.es148.js.map +1 -1
  212. package/dist/es/standards-sdk.es149.js +132 -50
  213. package/dist/es/standards-sdk.es149.js.map +1 -1
  214. package/dist/es/standards-sdk.es15.js +152 -151
  215. package/dist/es/standards-sdk.es15.js.map +1 -1
  216. package/dist/es/standards-sdk.es150.js +34 -74
  217. package/dist/es/standards-sdk.es150.js.map +1 -1
  218. package/dist/es/standards-sdk.es151.js +51 -167
  219. package/dist/es/standards-sdk.es151.js.map +1 -1
  220. package/dist/es/standards-sdk.es152.js +70 -308
  221. package/dist/es/standards-sdk.es152.js.map +1 -1
  222. package/dist/es/standards-sdk.es153.js +13 -342
  223. package/dist/es/standards-sdk.es153.js.map +1 -1
  224. package/dist/es/standards-sdk.es154.js +129 -410
  225. package/dist/es/standards-sdk.es154.js.map +1 -1
  226. package/dist/es/standards-sdk.es155.js +200 -209
  227. package/dist/es/standards-sdk.es155.js.map +1 -1
  228. package/dist/es/standards-sdk.es156.js +334 -64
  229. package/dist/es/standards-sdk.es156.js.map +1 -1
  230. package/dist/es/standards-sdk.es157.js +453 -871
  231. package/dist/es/standards-sdk.es157.js.map +1 -1
  232. package/dist/es/standards-sdk.es158.js +314 -222
  233. package/dist/es/standards-sdk.es158.js.map +1 -1
  234. package/dist/es/standards-sdk.es159.js +60 -228
  235. package/dist/es/standards-sdk.es159.js.map +1 -1
  236. package/dist/es/standards-sdk.es16.js +917 -136
  237. package/dist/es/standards-sdk.es16.js.map +1 -1
  238. package/dist/es/standards-sdk.es160.js +242 -0
  239. package/dist/es/standards-sdk.es160.js.map +1 -0
  240. package/dist/es/standards-sdk.es161.js +247 -0
  241. package/dist/es/standards-sdk.es161.js.map +1 -0
  242. package/dist/es/standards-sdk.es17.js +23 -944
  243. package/dist/es/standards-sdk.es17.js.map +1 -1
  244. package/dist/es/standards-sdk.es18.js +2422 -24
  245. package/dist/es/standards-sdk.es18.js.map +1 -1
  246. package/dist/es/standards-sdk.es19.js +817 -2071
  247. package/dist/es/standards-sdk.es19.js.map +1 -1
  248. package/dist/es/standards-sdk.es2.js +654 -189
  249. package/dist/es/standards-sdk.es2.js.map +1 -1
  250. package/dist/es/standards-sdk.es20.js +205 -1091
  251. package/dist/es/standards-sdk.es20.js.map +1 -1
  252. package/dist/es/standards-sdk.es21.js +858 -221
  253. package/dist/es/standards-sdk.es21.js.map +1 -1
  254. package/dist/es/standards-sdk.es22.js +179 -903
  255. package/dist/es/standards-sdk.es22.js.map +1 -1
  256. package/dist/es/standards-sdk.es23.js +164 -179
  257. package/dist/es/standards-sdk.es23.js.map +1 -1
  258. package/dist/es/standards-sdk.es24.js +62 -118
  259. package/dist/es/standards-sdk.es24.js.map +1 -1
  260. package/dist/es/standards-sdk.es25.js +377 -52
  261. package/dist/es/standards-sdk.es25.js.map +1 -1
  262. package/dist/es/standards-sdk.es26.js +36 -394
  263. package/dist/es/standards-sdk.es26.js.map +1 -1
  264. package/dist/es/standards-sdk.es27.js +901 -50
  265. package/dist/es/standards-sdk.es27.js.map +1 -1
  266. package/dist/es/standards-sdk.es28.js +134 -902
  267. package/dist/es/standards-sdk.es28.js.map +1 -1
  268. package/dist/es/standards-sdk.es29.js +7 -134
  269. package/dist/es/standards-sdk.es29.js.map +1 -1
  270. package/dist/es/standards-sdk.es3.js +63 -680
  271. package/dist/es/standards-sdk.es3.js.map +1 -1
  272. package/dist/es/standards-sdk.es30.js +344 -7
  273. package/dist/es/standards-sdk.es30.js.map +1 -1
  274. package/dist/es/standards-sdk.es31.js +302 -287
  275. package/dist/es/standards-sdk.es31.js.map +1 -1
  276. package/dist/es/standards-sdk.es32.js +94 -322
  277. package/dist/es/standards-sdk.es32.js.map +1 -1
  278. package/dist/es/standards-sdk.es33.js +458 -101
  279. package/dist/es/standards-sdk.es33.js.map +1 -1
  280. package/dist/es/standards-sdk.es34.js +132 -451
  281. package/dist/es/standards-sdk.es34.js.map +1 -1
  282. package/dist/es/standards-sdk.es35.js +216 -130
  283. package/dist/es/standards-sdk.es35.js.map +1 -1
  284. package/dist/es/standards-sdk.es36.js +273 -195
  285. package/dist/es/standards-sdk.es36.js.map +1 -1
  286. package/dist/es/standards-sdk.es37.js +148 -87
  287. package/dist/es/standards-sdk.es37.js.map +1 -1
  288. package/dist/es/standards-sdk.es38.js +183 -320
  289. package/dist/es/standards-sdk.es38.js.map +1 -1
  290. package/dist/es/standards-sdk.es39.js +238 -161
  291. package/dist/es/standards-sdk.es39.js.map +1 -1
  292. package/dist/es/standards-sdk.es4.js +425 -63
  293. package/dist/es/standards-sdk.es4.js.map +1 -1
  294. package/dist/es/standards-sdk.es40.js +136 -254
  295. package/dist/es/standards-sdk.es40.js.map +1 -1
  296. package/dist/es/standards-sdk.es41.js +225 -176
  297. package/dist/es/standards-sdk.es41.js.map +1 -1
  298. package/dist/es/standards-sdk.es42.js +199 -261
  299. package/dist/es/standards-sdk.es42.js.map +1 -1
  300. package/dist/es/standards-sdk.es43.js +237 -199
  301. package/dist/es/standards-sdk.es43.js.map +1 -1
  302. package/dist/es/standards-sdk.es44.js +209 -201
  303. package/dist/es/standards-sdk.es44.js.map +1 -1
  304. package/dist/es/standards-sdk.es45.js +305 -201
  305. package/dist/es/standards-sdk.es45.js.map +1 -1
  306. package/dist/es/standards-sdk.es46.js +371 -261
  307. package/dist/es/standards-sdk.es46.js.map +1 -1
  308. package/dist/es/standards-sdk.es47.js +316 -371
  309. package/dist/es/standards-sdk.es47.js.map +1 -1
  310. package/dist/es/standards-sdk.es48.js +404 -336
  311. package/dist/es/standards-sdk.es48.js.map +1 -1
  312. package/dist/es/standards-sdk.es49.js +83 -449
  313. package/dist/es/standards-sdk.es49.js.map +1 -1
  314. package/dist/es/standards-sdk.es5.js +232 -354
  315. package/dist/es/standards-sdk.es5.js.map +1 -1
  316. package/dist/es/standards-sdk.es50.js +179 -89
  317. package/dist/es/standards-sdk.es50.js.map +1 -1
  318. package/dist/es/standards-sdk.es51.js +231 -165
  319. package/dist/es/standards-sdk.es51.js.map +1 -1
  320. package/dist/es/standards-sdk.es52.js +25 -262
  321. package/dist/es/standards-sdk.es52.js.map +1 -1
  322. package/dist/es/standards-sdk.es53.js +56 -26
  323. package/dist/es/standards-sdk.es53.js.map +1 -1
  324. package/dist/es/standards-sdk.es54.js +12 -57
  325. package/dist/es/standards-sdk.es54.js.map +1 -1
  326. package/dist/es/standards-sdk.es55.js +49 -12
  327. package/dist/es/standards-sdk.es55.js.map +1 -1
  328. package/dist/es/standards-sdk.es56.js +115 -43
  329. package/dist/es/standards-sdk.es56.js.map +1 -1
  330. package/dist/es/standards-sdk.es57.js +42 -115
  331. package/dist/es/standards-sdk.es57.js.map +1 -1
  332. package/dist/es/standards-sdk.es58.js +52 -43
  333. package/dist/es/standards-sdk.es58.js.map +1 -1
  334. package/dist/es/standards-sdk.es59.js +36 -50
  335. package/dist/es/standards-sdk.es59.js.map +1 -1
  336. package/dist/es/standards-sdk.es6.js +125 -246
  337. package/dist/es/standards-sdk.es6.js.map +1 -1
  338. package/dist/es/standards-sdk.es60.js +207 -39
  339. package/dist/es/standards-sdk.es60.js.map +1 -1
  340. package/dist/es/standards-sdk.es61.js +24 -200
  341. package/dist/es/standards-sdk.es61.js.map +1 -1
  342. package/dist/es/standards-sdk.es62.js +87 -25
  343. package/dist/es/standards-sdk.es62.js.map +1 -1
  344. package/dist/es/standards-sdk.es63.js +3 -51
  345. package/dist/es/standards-sdk.es63.js.map +1 -1
  346. package/dist/es/standards-sdk.es64.js +100 -3
  347. package/dist/es/standards-sdk.es64.js.map +1 -1
  348. package/dist/es/standards-sdk.es65.js +61 -62
  349. package/dist/es/standards-sdk.es65.js.map +1 -1
  350. package/dist/es/standards-sdk.es66.js +17 -98
  351. package/dist/es/standards-sdk.es66.js.map +1 -1
  352. package/dist/es/standards-sdk.es67.js +77 -19
  353. package/dist/es/standards-sdk.es67.js.map +1 -1
  354. package/dist/es/standards-sdk.es68.js +458 -77
  355. package/dist/es/standards-sdk.es68.js.map +1 -1
  356. package/dist/es/standards-sdk.es69.js +106 -240
  357. package/dist/es/standards-sdk.es69.js.map +1 -1
  358. package/dist/es/standards-sdk.es7.js +28 -183
  359. package/dist/es/standards-sdk.es7.js.map +1 -1
  360. package/dist/es/standards-sdk.es70.js +170 -286
  361. package/dist/es/standards-sdk.es70.js.map +1 -1
  362. package/dist/es/standards-sdk.es71.js +71 -207
  363. package/dist/es/standards-sdk.es71.js.map +1 -1
  364. package/dist/es/standards-sdk.es72.js +71 -72
  365. package/dist/es/standards-sdk.es72.js.map +1 -1
  366. package/dist/es/standards-sdk.es73.js +143 -71
  367. package/dist/es/standards-sdk.es73.js.map +1 -1
  368. package/dist/es/standards-sdk.es74.js +62 -136
  369. package/dist/es/standards-sdk.es74.js.map +1 -1
  370. package/dist/es/standards-sdk.es75.js +380 -45
  371. package/dist/es/standards-sdk.es75.js.map +1 -1
  372. package/dist/es/standards-sdk.es76.js +222 -130
  373. package/dist/es/standards-sdk.es76.js.map +1 -1
  374. package/dist/es/standards-sdk.es77.js +320 -444
  375. package/dist/es/standards-sdk.es77.js.map +1 -1
  376. package/dist/es/standards-sdk.es78.js +88 -370
  377. package/dist/es/standards-sdk.es78.js.map +1 -1
  378. package/dist/es/standards-sdk.es79.js +125 -89
  379. package/dist/es/standards-sdk.es79.js.map +1 -1
  380. package/dist/es/standards-sdk.es8.js +80 -29
  381. package/dist/es/standards-sdk.es8.js.map +1 -1
  382. package/dist/es/standards-sdk.es80.js +8 -125
  383. package/dist/es/standards-sdk.es80.js.map +1 -1
  384. package/dist/es/standards-sdk.es81.js +45 -6
  385. package/dist/es/standards-sdk.es81.js.map +1 -1
  386. package/dist/es/standards-sdk.es82.js +98 -44
  387. package/dist/es/standards-sdk.es82.js.map +1 -1
  388. package/dist/es/standards-sdk.es83.js +331 -84
  389. package/dist/es/standards-sdk.es83.js.map +1 -1
  390. package/dist/es/standards-sdk.es84.js +93 -160
  391. package/dist/es/standards-sdk.es84.js.map +1 -1
  392. package/dist/es/standards-sdk.es85.js +55 -275
  393. package/dist/es/standards-sdk.es85.js.map +1 -1
  394. package/dist/es/standards-sdk.es86.js +43 -55
  395. package/dist/es/standards-sdk.es86.js.map +1 -1
  396. package/dist/es/standards-sdk.es87.js +145 -22
  397. package/dist/es/standards-sdk.es87.js.map +1 -1
  398. package/dist/es/standards-sdk.es88.js +34 -47
  399. package/dist/es/standards-sdk.es88.js.map +1 -1
  400. package/dist/es/standards-sdk.es89.js +22 -57
  401. package/dist/es/standards-sdk.es89.js.map +1 -1
  402. package/dist/es/standards-sdk.es9.js +104 -80
  403. package/dist/es/standards-sdk.es9.js.map +1 -1
  404. package/dist/es/standards-sdk.es90.js +23 -28
  405. package/dist/es/standards-sdk.es90.js.map +1 -1
  406. package/dist/es/standards-sdk.es91.js +238 -23
  407. package/dist/es/standards-sdk.es91.js.map +1 -1
  408. package/dist/es/standards-sdk.es92.js +265 -152
  409. package/dist/es/standards-sdk.es92.js.map +1 -1
  410. package/dist/es/standards-sdk.es93.js +95 -68
  411. package/dist/es/standards-sdk.es93.js.map +1 -1
  412. package/dist/es/standards-sdk.es94.js +124 -136
  413. package/dist/es/standards-sdk.es94.js.map +1 -1
  414. package/dist/es/standards-sdk.es95.js +42 -138
  415. package/dist/es/standards-sdk.es95.js.map +1 -1
  416. package/dist/es/standards-sdk.es96.js +259 -42
  417. package/dist/es/standards-sdk.es96.js.map +1 -1
  418. package/dist/es/standards-sdk.es97.js +82 -243
  419. package/dist/es/standards-sdk.es97.js.map +1 -1
  420. package/dist/es/standards-sdk.es98.js +48 -47
  421. package/dist/es/standards-sdk.es98.js.map +1 -1
  422. package/dist/es/standards-sdk.es99.js +29 -100
  423. package/dist/es/standards-sdk.es99.js.map +1 -1
  424. package/dist/es/utils/crypto-abstraction.d.ts.map +1 -1
  425. package/dist/es/utils/crypto-env.d.ts.map +1 -1
  426. package/dist/es/utils/dynamic-import.d.ts +5 -1
  427. package/dist/es/utils/dynamic-import.d.ts.map +1 -1
  428. package/dist/es/utils/hash-adapter.d.ts.map +1 -1
  429. package/package.json +76 -63
  430. package/dist/cjs/patches/topic-autorenew-patch.d.ts +0 -2
  431. package/dist/cjs/patches/topic-autorenew-patch.d.ts.map +0 -1
  432. package/dist/es/patches/topic-autorenew-patch.d.ts +0 -2
  433. package/dist/es/patches/topic-autorenew-patch.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es135.js","sources":["../../src/services/registry-broker/client/chat.ts"],"sourcesContent":["import type {\n AcceptConversationOptions,\n AcceptEncryptedChatSessionOptions,\n AgentAuthConfig,\n ChatConversationHandle,\n ChatHistoryCompactionResponse,\n ChatHistoryFetchOptions,\n ChatHistorySnapshotWithDecryptedEntries,\n CompactHistoryRequestPayload,\n CreateSessionRequestPayload,\n CreateSessionResponse,\n EncryptionHandshakeRecord,\n EncryptionHandshakeSubmissionPayload,\n EncryptedChatSessionHandle,\n JsonObject,\n JsonValue,\n SendMessageRequestPayload,\n SendMessageResponse,\n SessionEncryptionStatusResponse,\n SessionEncryptionSummary,\n StartChatOptions,\n StartConversationOptions,\n StartEncryptedChatSessionOptions,\n} from '../types';\nimport {\n chatHistoryCompactionResponseSchema,\n createSessionResponseSchema,\n encryptionHandshakeResponseSchema,\n sendMessageResponseSchema,\n sessionEncryptionStatusResponseSchema,\n} from '../schemas';\nimport { RegistryBrokerClient } from './base-client';\nimport { serialiseAuthConfig, toJsonObject } from './utils';\nimport {\n EncryptedChatManager,\n EncryptionUnavailableError,\n} from './encrypted-chat-manager';\nconst encryptedManagers = new WeakMap<\n RegistryBrokerClient,\n EncryptedChatManager\n>();\nconst chatApis = new WeakMap<\n RegistryBrokerClient,\n RegistryBrokerClient['chat']\n>();\nfunction getEncryptedChatManager(\n client: RegistryBrokerClient,\n): EncryptedChatManager {\n const existing = encryptedManagers.get(client);\n if (existing) {\n return existing;\n }\n const created = new EncryptedChatManager(client);\n encryptedManagers.set(client, created);\n return created;\n}\ndeclare module './base-client' {\n interface RegistryBrokerClient {\n readonly chat: {\n start: (options: StartChatOptions) => Promise<ChatConversationHandle>;\n createSession: (\n payload: CreateSessionRequestPayload,\n ) => Promise<CreateSessionResponse>;\n sendMessage: (\n payload: SendMessageRequestPayload,\n ) => Promise<SendMessageResponse>;\n endSession: (sessionId: string) => Promise<void>;\n getHistory: (\n sessionId: string,\n options?: ChatHistoryFetchOptions,\n ) => Promise<ChatHistorySnapshotWithDecryptedEntries>;\n compactHistory: (\n payload: CompactHistoryRequestPayload,\n ) => Promise<ChatHistoryCompactionResponse>;\n getEncryptionStatus: (\n sessionId: string,\n ) => Promise<SessionEncryptionStatusResponse>;\n submitEncryptionHandshake: (\n sessionId: string,\n payload: EncryptionHandshakeSubmissionPayload,\n ) => Promise<EncryptionHandshakeRecord>;\n createEncryptedSession?: (\n options: StartEncryptedChatSessionOptions,\n ) => Promise<EncryptedChatSessionHandle>;\n acceptEncryptedSession?: (\n options: AcceptEncryptedChatSessionOptions,\n ) => Promise<EncryptedChatSessionHandle>;\n startConversation: (\n options: StartConversationOptions,\n ) => Promise<ChatConversationHandle>;\n acceptConversation: (\n options: AcceptConversationOptions,\n ) => Promise<ChatConversationHandle>;\n };\n createSession(\n payload: CreateSessionRequestPayload,\n allowHistoryAutoTopUp?: boolean,\n ): Promise<CreateSessionResponse>;\n startChat(options: StartChatOptions): Promise<ChatConversationHandle>;\n startConversation(\n options: StartConversationOptions,\n ): Promise<ChatConversationHandle>;\n acceptConversation(\n options: AcceptConversationOptions,\n ): Promise<ChatConversationHandle>;\n compactHistory(\n payload: CompactHistoryRequestPayload,\n ): Promise<ChatHistoryCompactionResponse>;\n fetchEncryptionStatus(\n sessionId: string,\n ): Promise<SessionEncryptionStatusResponse>;\n postEncryptionHandshake(\n sessionId: string,\n payload: EncryptionHandshakeSubmissionPayload,\n ): Promise<EncryptionHandshakeRecord>;\n sendMessage(\n payload: SendMessageRequestPayload,\n ): Promise<SendMessageResponse>;\n endSession(sessionId: string): Promise<void>;\n createPlaintextConversationHandle(\n sessionId: string,\n summary: SessionEncryptionSummary | null,\n defaultAuth?: AgentAuthConfig,\n context?: { uaid?: string; agentUrl?: string },\n ): ChatConversationHandle;\n }\n}\nObject.defineProperty(RegistryBrokerClient.prototype, 'chat', {\n get(this: RegistryBrokerClient) {\n const existing = chatApis.get(this);\n if (existing) {\n return existing;\n }\n const encryptedManager = getEncryptedChatManager(this);\n const api = {\n start: (options: StartChatOptions) => this.startChat(options),\n createSession: (payload: CreateSessionRequestPayload) =>\n this.createSession(payload),\n sendMessage: (payload: SendMessageRequestPayload) =>\n this.sendMessage(payload),\n endSession: (sessionId: string) => this.endSession(sessionId),\n getHistory: (sessionId: string, options?: ChatHistoryFetchOptions) =>\n this.fetchHistorySnapshot(sessionId, options),\n compactHistory: (payload: CompactHistoryRequestPayload) =>\n this.compactHistory(payload),\n getEncryptionStatus: (sessionId: string) =>\n this.fetchEncryptionStatus(sessionId),\n submitEncryptionHandshake: (\n sessionId: string,\n payload: EncryptionHandshakeSubmissionPayload,\n ) => this.postEncryptionHandshake(sessionId, payload),\n startConversation: (options: StartConversationOptions) =>\n this.startConversation(options),\n acceptConversation: (options: AcceptConversationOptions) =>\n this.acceptConversation(options),\n createEncryptedSession: (options: StartEncryptedChatSessionOptions) =>\n encryptedManager.startSession(options),\n acceptEncryptedSession: (options: AcceptEncryptedChatSessionOptions) =>\n encryptedManager.acceptSession(options),\n };\n chatApis.set(this, api);\n return api;\n },\n});\nRegistryBrokerClient.prototype.createSession = async function (\n this: RegistryBrokerClient,\n payload: CreateSessionRequestPayload,\n allowHistoryAutoTopUp = true,\n): Promise<CreateSessionResponse> {\n const body: JsonObject = {};\n if ('uaid' in payload && payload.uaid) {\n body.uaid = payload.uaid;\n }\n if ('agentUrl' in payload && payload.agentUrl) {\n body.agentUrl = payload.agentUrl;\n }\n if (payload.auth) {\n body.auth = serialiseAuthConfig(payload.auth);\n }\n if (payload.historyTtlSeconds !== undefined) {\n body.historyTtlSeconds = payload.historyTtlSeconds;\n }\n if (payload.encryptionRequested !== undefined) {\n body.encryptionRequested = payload.encryptionRequested;\n }\n if (payload.senderUaid) {\n body.senderUaid = payload.senderUaid;\n }\n try {\n const raw = await this.requestJson<JsonValue>('/chat/session', {\n method: 'POST',\n body,\n headers: { 'content-type': 'application/json' },\n });\n return this.parseWithSchema(\n raw,\n createSessionResponseSchema,\n 'chat session response',\n );\n } catch (error) {\n const maybeError = error instanceof Error ? error : null;\n if (\n allowHistoryAutoTopUp &&\n this.shouldAutoTopUpHistory(payload, maybeError)\n ) {\n await this.executeHistoryAutoTopUp('chat.session');\n return this.createSession(payload, false);\n }\n throw error;\n }\n};\nRegistryBrokerClient.prototype.startChat = async function (\n this: RegistryBrokerClient,\n options: StartChatOptions,\n): Promise<ChatConversationHandle> {\n if ('uaid' in options && options.uaid) {\n return this.startConversation({\n uaid: options.uaid,\n senderUaid: options.senderUaid,\n historyTtlSeconds: options.historyTtlSeconds,\n auth: options.auth,\n encryption: options.encryption,\n onSessionCreated: options.onSessionCreated,\n });\n }\n if ('agentUrl' in options && options.agentUrl) {\n const session = await this.createSession({\n agentUrl: options.agentUrl,\n auth: options.auth,\n historyTtlSeconds: options.historyTtlSeconds,\n senderUaid: options.senderUaid,\n });\n options.onSessionCreated?.(session.sessionId);\n return this.createPlaintextConversationHandle(\n session.sessionId,\n session.encryption ?? null,\n options.auth,\n { agentUrl: options.agentUrl, uaid: options.uaid },\n );\n }\n throw new Error('startChat requires either uaid or agentUrl');\n};\nRegistryBrokerClient.prototype.startConversation = async function (\n this: RegistryBrokerClient,\n options: StartConversationOptions,\n): Promise<ChatConversationHandle> {\n const preference = options.encryption?.preference ?? 'preferred';\n const requestEncryption = preference !== 'disabled';\n if (!requestEncryption) {\n const session = await this.createSession({\n uaid: options.uaid,\n auth: options.auth,\n historyTtlSeconds: options.historyTtlSeconds,\n senderUaid: options.senderUaid,\n encryptionRequested: false,\n });\n options.onSessionCreated?.(session.sessionId);\n return this.createPlaintextConversationHandle(\n session.sessionId,\n session.encryption ?? null,\n options.auth,\n { uaid: options.uaid },\n );\n }\n try {\n const encryptedManager = getEncryptedChatManager(this);\n const handle = await encryptedManager.startSession({\n uaid: options.uaid,\n senderUaid: options.senderUaid,\n historyTtlSeconds: options.historyTtlSeconds,\n handshakeTimeoutMs: options.encryption?.handshakeTimeoutMs,\n pollIntervalMs: options.encryption?.pollIntervalMs,\n onSessionCreated: sessionId => {\n options.onSessionCreated?.(sessionId);\n },\n auth: options.auth,\n });\n return handle;\n } catch (error) {\n if (error instanceof EncryptionUnavailableError) {\n if (preference === 'required') {\n throw error;\n }\n return this.createPlaintextConversationHandle(\n error.sessionId,\n error.summary ?? null,\n options.auth,\n { uaid: options.uaid },\n );\n }\n throw error;\n }\n};\nRegistryBrokerClient.prototype.acceptConversation = async function (\n this: RegistryBrokerClient,\n options: AcceptConversationOptions,\n): Promise<ChatConversationHandle> {\n const preference = options.encryption?.preference ?? 'preferred';\n if (preference === 'disabled') {\n return this.createPlaintextConversationHandle(options.sessionId, null);\n }\n try {\n const encryptedManager = getEncryptedChatManager(this);\n const handle = await encryptedManager.acceptSession({\n sessionId: options.sessionId,\n responderUaid: options.responderUaid,\n handshakeTimeoutMs: options.encryption?.handshakeTimeoutMs,\n pollIntervalMs: options.encryption?.pollIntervalMs,\n });\n return handle;\n } catch (error) {\n if (\n error instanceof EncryptionUnavailableError &&\n preference !== 'required'\n ) {\n return this.createPlaintextConversationHandle(\n options.sessionId,\n null,\n undefined,\n { uaid: options.responderUaid },\n );\n }\n throw error;\n }\n};\nRegistryBrokerClient.prototype.createPlaintextConversationHandle = function (\n this: RegistryBrokerClient,\n sessionId: string,\n summary: SessionEncryptionSummary | null,\n defaultAuth?: AgentAuthConfig,\n context?: { uaid?: string; agentUrl?: string },\n): ChatConversationHandle {\n const uaid = context?.uaid?.trim();\n const agentUrl = context?.agentUrl?.trim();\n return {\n sessionId,\n mode: 'plaintext',\n summary: summary ?? null,\n send: async options => {\n const plaintext = options.plaintext;\n if (!plaintext || plaintext.trim().length === 0) {\n throw new Error('plaintext is required for chat messages');\n }\n const message = options.message ?? plaintext;\n return this.sendMessage({\n sessionId,\n message,\n streaming: options.streaming,\n auth: options.auth ?? defaultAuth,\n uaid,\n agentUrl,\n });\n },\n decryptHistoryEntry: entry => entry.content,\n };\n};\nRegistryBrokerClient.prototype.compactHistory = async function (\n this: RegistryBrokerClient,\n payload: CompactHistoryRequestPayload,\n): Promise<ChatHistoryCompactionResponse> {\n if (!payload.sessionId || payload.sessionId.trim().length === 0) {\n throw new Error('sessionId is required to compact chat history');\n }\n const body: JsonObject = {};\n if (\n typeof payload.preserveEntries === 'number' &&\n Number.isFinite(payload.preserveEntries) &&\n payload.preserveEntries >= 0\n ) {\n body.preserveEntries = Math.floor(payload.preserveEntries);\n }\n const raw = await this.requestJson<JsonValue>(\n `/chat/session/${encodeURIComponent(payload.sessionId)}/compact`,\n {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body,\n },\n );\n return this.parseWithSchema(\n raw,\n chatHistoryCompactionResponseSchema,\n 'chat history compaction response',\n );\n};\nRegistryBrokerClient.prototype.fetchEncryptionStatus = async function (\n this: RegistryBrokerClient,\n sessionId: string,\n): Promise<SessionEncryptionStatusResponse> {\n if (!sessionId || sessionId.trim().length === 0) {\n throw new Error('sessionId is required for encryption status');\n }\n const raw = await this.requestJson<JsonValue>(\n `/chat/session/${encodeURIComponent(sessionId)}/encryption`,\n {\n method: 'GET',\n },\n );\n return this.parseWithSchema(\n raw,\n sessionEncryptionStatusResponseSchema,\n 'session encryption status response',\n );\n};\nRegistryBrokerClient.prototype.postEncryptionHandshake = async function (\n this: RegistryBrokerClient,\n sessionId: string,\n payload: EncryptionHandshakeSubmissionPayload,\n): Promise<EncryptionHandshakeRecord> {\n if (!sessionId || sessionId.trim().length === 0) {\n throw new Error('sessionId is required for encryption handshake');\n }\n const raw = await this.requestJson<JsonValue>(\n `/chat/session/${encodeURIComponent(sessionId)}/encryption-handshake`,\n {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: {\n role: payload.role,\n keyType: payload.keyType,\n ephemeralPublicKey: payload.ephemeralPublicKey,\n longTermPublicKey: payload.longTermPublicKey,\n signature: payload.signature,\n uaid: payload.uaid,\n userId: payload.userId,\n ledgerAccountId: payload.ledgerAccountId,\n metadata: payload.metadata,\n },\n },\n );\n const response = this.parseWithSchema(\n raw,\n encryptionHandshakeResponseSchema,\n 'encryption handshake response',\n );\n return response.handshake;\n};\nRegistryBrokerClient.prototype.sendMessage = async function (\n this: RegistryBrokerClient,\n payload: SendMessageRequestPayload,\n): Promise<SendMessageResponse> {\n const body: JsonObject = {\n message: payload.message,\n };\n if (payload.streaming !== undefined) {\n body.streaming = payload.streaming;\n }\n if (payload.auth) {\n body.auth = serialiseAuthConfig(payload.auth);\n }\n if ('uaid' in payload) {\n body.uaid = payload.uaid;\n }\n if ('sessionId' in payload && payload.sessionId) {\n body.sessionId = payload.sessionId;\n }\n if ('agentUrl' in payload && payload.agentUrl) {\n body.agentUrl = payload.agentUrl;\n }\n let cipherEnvelope = payload.cipherEnvelope ?? null;\n if (payload.encryption) {\n const sessionIdForEncryption =\n payload.encryption.sessionId ??\n (typeof body.sessionId === 'string' ? body.sessionId : undefined);\n if (!sessionIdForEncryption) {\n throw new Error(\n 'sessionId is required when using encrypted chat payloads',\n );\n }\n if (!payload.encryption.recipients?.length) {\n throw new Error('recipients are required for encrypted chat payloads');\n }\n cipherEnvelope = this.encryption.encryptCipherEnvelope({\n ...payload.encryption,\n sessionId: sessionIdForEncryption,\n });\n }\n if (cipherEnvelope) {\n body.cipherEnvelope = toJsonObject(cipherEnvelope);\n }\n const raw = await this.requestJson<JsonValue>('/chat/message', {\n method: 'POST',\n body,\n headers: { 'content-type': 'application/json' },\n });\n return this.parseWithSchema(\n raw,\n sendMessageResponseSchema,\n 'chat message response',\n );\n};\nRegistryBrokerClient.prototype.endSession = async function (\n this: RegistryBrokerClient,\n sessionId: string,\n): Promise<void> {\n await this.request(`/chat/session/${encodeURIComponent(sessionId)}`, {\n method: 'DELETE',\n });\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es135.js","sources":["../../src/services/registry-broker/client/base-client.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport {\n createCipheriv,\n createDecipheriv,\n createHash,\n randomBytes,\n} from 'crypto';\nimport { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { ZodError, z } from 'zod';\nimport type {\n AgentFeedbackEligibilityRequest,\n AgentFeedbackEligibilityResponse,\n AgentFeedbackIndexResponse,\n AgentFeedbackEntriesIndexResponse,\n AgentFeedbackQuery,\n AgentFeedbackResponse,\n AgentFeedbackSubmissionRequest,\n AgentFeedbackSubmissionResponse,\n AutoTopUpOptions,\n ClientEncryptionOptions,\n CreateSessionRequestPayload,\n DeriveSharedSecretOptions,\n DecryptCipherEnvelopeOptions,\n EncryptCipherEnvelopeOptions,\n EphemeralKeyPair,\n HistoryAutoTopUpOptions,\n InitializeAgentClientOptions,\n JsonObject,\n JsonValue,\n RegisterAgentResponse,\n RegisterAgentPartialResponse,\n RegisterAgentPendingResponse,\n RegisterAgentSuccessResponse,\n RegistryBrokerClientOptions,\n SharedSecretInput,\n} from '../types';\nimport {\n agentFeedbackEligibilityResponseSchema,\n agentFeedbackEntriesIndexResponseSchema,\n agentFeedbackIndexResponseSchema,\n agentFeedbackResponseSchema,\n agentFeedbackSubmissionResponseSchema,\n} from '../schemas';\nimport {\n createAbortError,\n DEFAULT_BASE_URL,\n DEFAULT_HISTORY_TOP_UP_HBAR,\n DEFAULT_USER_AGENT,\n JSON_CONTENT_TYPE,\n isJsonObject,\n isBrowserRuntime,\n normaliseBaseUrl,\n normaliseHeaderName,\n} from './utils';\nimport {\n RegistryBrokerError,\n RegistryBrokerParseError,\n type ErrorDetails,\n} from './errors';\nexport interface InitializedAgentClient {\n client: RegistryBrokerClient;\n encryption?: { publicKey: string; privateKey?: string } | null;\n}\nexport interface GenerateEncryptionKeyPairOptions {\n keyType?: 'secp256k1';\n envVar?: string;\n envPath?: string;\n overwrite?: boolean;\n}\nexport interface RequestConfig {\n method?: string;\n body?: unknown;\n headers?: Record<string, string>;\n}\nexport class RegistryBrokerClient {\n static async initializeAgent(\n options: InitializeAgentClientOptions,\n ): Promise<InitializedAgentClient> {\n const { uaid, ensureEncryptionKey = true, ...clientOptions } = options;\n const client = new RegistryBrokerClient(clientOptions);\n let encryption: { publicKey: string; privateKey?: string } | null = null;\n if (ensureEncryptionKey) {\n const ensureOptions =\n typeof ensureEncryptionKey === 'object'\n ? ensureEncryptionKey\n : { generateIfMissing: true };\n encryption = await client.encryption.ensureAgentKey({\n uaid,\n ...ensureOptions,\n });\n }\n return { client, encryption };\n }\n readonly baseUrl: string;\n readonly fetchImpl: typeof fetch;\n readonly defaultHeaders: Record<string, string>;\n readonly registrationAutoTopUp?: AutoTopUpOptions;\n readonly historyAutoTopUp?: HistoryAutoTopUpOptions;\n readonly encryptionOptions?: ClientEncryptionOptions;\n encryptionBootstrapPromise: Promise<void> | null = null;\n constructor(options: RegistryBrokerClientOptions = {}) {\n const {\n baseUrl = DEFAULT_BASE_URL,\n fetchImplementation,\n defaultHeaders,\n apiKey,\n ledgerApiKey,\n registrationAutoTopUp,\n historyAutoTopUp,\n encryption,\n } = options;\n this.baseUrl = normaliseBaseUrl(baseUrl);\n this.fetchImpl = fetchImplementation ?? fetch;\n this.defaultHeaders = {\n ...(defaultHeaders ?? {}),\n };\n Object.entries(this.defaultHeaders).forEach(([key, value]) => {\n const headerName = normaliseHeaderName(key);\n if (headerName !== key) {\n delete this.defaultHeaders[key];\n this.defaultHeaders[headerName] = value;\n }\n });\n if (apiKey) {\n this.defaultHeaders['x-api-key'] = apiKey;\n }\n if (ledgerApiKey) {\n this.defaultHeaders['x-ledger-api-key'] = ledgerApiKey;\n }\n this.registrationAutoTopUp = registrationAutoTopUp;\n this.historyAutoTopUp = historyAutoTopUp;\n this.encryptionOptions = encryption;\n\n if (this.encryptionOptions) {\n this.encryptionBootstrapPromise = this.initializeEncryptionBootstrap(\n this.encryptionOptions,\n );\n }\n }\n\n setApiKey(apiKey?: string): void {\n this.setDefaultHeader('x-api-key', apiKey);\n }\n\n setLedgerApiKey(apiKey?: string): void {\n this.setDefaultHeader('x-ledger-api-key', apiKey);\n }\n\n setDefaultHeader(name: string, value?: string | null): void {\n if (!name || name.trim().length === 0) {\n return;\n }\n const headerName = normaliseHeaderName(name);\n if (!value || value.trim().length === 0) {\n delete this.defaultHeaders[headerName];\n return;\n }\n this.defaultHeaders[headerName] = value.trim();\n }\n\n getDefaultHeaders(): Record<string, string> {\n return { ...this.defaultHeaders };\n }\n\n async encryptionReady(): Promise<void> {\n if (!this.encryptionBootstrapPromise) {\n return;\n }\n await this.encryptionBootstrapPromise;\n }\n\n buildUrl(path: string): string {\n const normalisedPath = path.startsWith('/') ? path : `/${path}`;\n return `${this.baseUrl}${normalisedPath}`;\n }\n\n async request(path: string, config: RequestConfig): Promise<Response> {\n const headers = new Headers();\n Object.entries(this.defaultHeaders).forEach(([key, value]) => {\n headers.set(key, value);\n });\n if (config.headers) {\n Object.entries(config.headers).forEach(([key, value]) => {\n headers.set(key, value);\n });\n }\n if (!headers.has('accept')) {\n headers.set('accept', 'application/json');\n }\n if (!headers.has('user-agent') && !isBrowserRuntime()) {\n headers.set('user-agent', DEFAULT_USER_AGENT);\n }\n\n const init: RequestInit = {\n method: config.method ?? 'GET',\n headers,\n };\n\n if (config.body !== undefined) {\n init.body = JSON.stringify(config.body);\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/json');\n }\n }\n\n const response = await this.fetchImpl(this.buildUrl(path), init);\n if (response.ok) {\n return response;\n }\n const errorBody = await this.extractErrorBody(response);\n throw new RegistryBrokerError('Registry broker request failed', {\n status: response.status,\n statusText: response.statusText,\n body: errorBody,\n });\n }\n\n async requestJson<T extends JsonValue = JsonValue>(\n path: string,\n config: RequestConfig,\n ): Promise<T> {\n const response = await this.request(path, config);\n const contentType = response.headers?.get('content-type') ?? '';\n if (!JSON_CONTENT_TYPE.test(contentType)) {\n const body = await response.text();\n throw new RegistryBrokerParseError(\n 'Expected JSON response from registry broker',\n body,\n );\n }\n return (await response.json()) as T;\n }\n\n async getAgentFeedback(\n uaid: string,\n options: AgentFeedbackQuery = {},\n ): Promise<AgentFeedbackResponse> {\n const normalized = uaid.trim();\n if (!normalized) {\n throw new Error('uaid is required');\n }\n const query = options.includeRevoked === true ? '?includeRevoked=true' : '';\n const raw = await this.requestJson<JsonValue>(\n `/agents/${encodeURIComponent(normalized)}/feedback${query}`,\n { method: 'GET' },\n );\n return this.parseWithSchema(\n raw,\n agentFeedbackResponseSchema,\n 'agent feedback response',\n );\n }\n\n async listAgentFeedbackIndex(\n options: { page?: number; limit?: number; registries?: string[] } = {},\n ): Promise<AgentFeedbackIndexResponse> {\n const params = new URLSearchParams();\n if (typeof options.page === 'number' && Number.isFinite(options.page)) {\n params.set('page', String(Math.trunc(options.page)));\n }\n if (typeof options.limit === 'number' && Number.isFinite(options.limit)) {\n params.set('limit', String(Math.trunc(options.limit)));\n }\n if (options.registries?.length) {\n params.set('registry', options.registries.join(','));\n }\n const suffix = params.size > 0 ? `?${params.toString()}` : '';\n\n const raw = await this.requestJson<JsonValue>(`/agents/feedback${suffix}`, {\n method: 'GET',\n });\n return this.parseWithSchema(\n raw,\n agentFeedbackIndexResponseSchema,\n 'agent feedback index response',\n );\n }\n\n async listAgentFeedbackEntriesIndex(\n options: { page?: number; limit?: number; registries?: string[] } = {},\n ): Promise<AgentFeedbackEntriesIndexResponse> {\n const params = new URLSearchParams();\n if (typeof options.page === 'number' && Number.isFinite(options.page)) {\n params.set('page', String(Math.trunc(options.page)));\n }\n if (typeof options.limit === 'number' && Number.isFinite(options.limit)) {\n params.set('limit', String(Math.trunc(options.limit)));\n }\n if (options.registries?.length) {\n params.set('registry', options.registries.join(','));\n }\n const suffix = params.size > 0 ? `?${params.toString()}` : '';\n\n const raw = await this.requestJson<JsonValue>(\n `/agents/feedback/entries${suffix}`,\n { method: 'GET' },\n );\n return this.parseWithSchema(\n raw,\n agentFeedbackEntriesIndexResponseSchema,\n 'agent feedback entries index response',\n );\n }\n\n async checkAgentFeedbackEligibility(\n uaid: string,\n payload: AgentFeedbackEligibilityRequest,\n ): Promise<AgentFeedbackEligibilityResponse> {\n const normalized = uaid.trim();\n if (!normalized) {\n throw new Error('uaid is required');\n }\n const raw = await this.requestJson<JsonValue>(\n `/agents/${encodeURIComponent(normalized)}/feedback/eligibility`,\n {\n method: 'POST',\n body: payload,\n headers: { 'content-type': 'application/json' },\n },\n );\n return this.parseWithSchema(\n raw,\n agentFeedbackEligibilityResponseSchema,\n 'agent feedback eligibility response',\n );\n }\n\n async submitAgentFeedback(\n uaid: string,\n payload: AgentFeedbackSubmissionRequest,\n ): Promise<AgentFeedbackSubmissionResponse> {\n const normalized = uaid.trim();\n if (!normalized) {\n throw new Error('uaid is required');\n }\n const raw = await this.requestJson<JsonValue>(\n `/agents/${encodeURIComponent(normalized)}/feedback`,\n {\n method: 'POST',\n body: payload,\n headers: { 'content-type': 'application/json' },\n },\n );\n return this.parseWithSchema(\n raw,\n agentFeedbackSubmissionResponseSchema,\n 'agent feedback submission response',\n );\n }\n\n private async extractErrorBody(response: Response): Promise<JsonValue> {\n const contentType = response.headers?.get('content-type') ?? '';\n if (JSON_CONTENT_TYPE.test(contentType)) {\n try {\n return (await response.json()) as JsonValue;\n } catch (error) {\n return { parseError: String(error) };\n }\n }\n try {\n return await response.text();\n } catch (error) {\n return { parseError: String(error) };\n }\n }\n\n parseWithSchema<T>(\n value: JsonValue,\n schema: z.ZodSchema<T>,\n context: string,\n ): T {\n try {\n return schema.parse(value);\n } catch (error) {\n throw new RegistryBrokerParseError(\n `Failed to parse ${context}`,\n error instanceof ZodError || error instanceof Error\n ? error\n : String(error),\n value,\n );\n }\n }\n\n async delay(ms: number, signal?: AbortSignal): Promise<void> {\n if (ms <= 0) {\n if (signal?.aborted) {\n throw createAbortError();\n }\n return;\n }\n\n await new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n if (signal) {\n signal.removeEventListener('abort', onAbort);\n }\n resolve();\n }, ms);\n\n const onAbort = (): void => {\n clearTimeout(timer);\n signal?.removeEventListener('abort', onAbort);\n reject(createAbortError());\n };\n\n if (signal) {\n if (signal.aborted) {\n clearTimeout(timer);\n reject(createAbortError());\n return;\n }\n signal.addEventListener('abort', onAbort, { once: true });\n }\n });\n }\n\n assertNodeRuntime(feature: string): void {\n if (typeof process === 'undefined' || !process.versions?.node) {\n throw new Error(`${feature} is only available in Node.js environments`);\n }\n }\n\n createEphemeralKeyPair(): EphemeralKeyPair {\n this.assertNodeRuntime('generateEphemeralKeyPair');\n const privateKeyBytes = randomBytes(32);\n const publicKey = secp256k1.getPublicKey(privateKeyBytes, true);\n return {\n privateKey: Buffer.from(privateKeyBytes).toString('hex'),\n publicKey: Buffer.from(publicKey).toString('hex'),\n };\n }\n\n deriveSharedSecret(options: DeriveSharedSecretOptions): Buffer {\n this.assertNodeRuntime('deriveSharedSecret');\n const privateKey = this.hexToBuffer(options.privateKey);\n const peerPublicKey = this.hexToBuffer(options.peerPublicKey);\n const shared = secp256k1.getSharedSecret(privateKey, peerPublicKey, true);\n return createHash('sha256').update(Buffer.from(shared)).digest();\n }\n\n buildCipherEnvelope(options: EncryptCipherEnvelopeOptions) {\n this.assertNodeRuntime('encryptCipherEnvelope');\n const sharedSecret = this.normalizeSharedSecret(options.sharedSecret);\n const iv = randomBytes(12);\n const cipher = createCipheriv('aes-256-gcm', sharedSecret, iv);\n const aadSource = options.associatedData ?? options.sessionId;\n const associatedDataEncoded = aadSource\n ? Buffer.from(aadSource, 'utf8').toString('base64')\n : undefined;\n if (aadSource) {\n cipher.setAAD(Buffer.from(aadSource, 'utf8'));\n }\n const ciphertext = Buffer.concat([\n cipher.update(Buffer.from(options.plaintext, 'utf8')),\n cipher.final(),\n ]);\n const tag = cipher.getAuthTag();\n const payload = Buffer.concat([ciphertext, tag]);\n\n return {\n algorithm: 'aes-256-gcm',\n ciphertext: payload.toString('base64'),\n nonce: iv.toString('base64'),\n associatedData: associatedDataEncoded,\n keyLocator: {\n sessionId: options.sessionId,\n revision: options.revision ?? 1,\n },\n recipients: options.recipients.map(recipient => ({\n ...recipient,\n encryptedShare: '',\n })),\n };\n }\n\n openCipherEnvelope(options: DecryptCipherEnvelopeOptions): string {\n this.assertNodeRuntime('decryptCipherEnvelope');\n const sharedSecret = this.normalizeSharedSecret(options.sharedSecret);\n const payload = Buffer.from(options.envelope.ciphertext, 'base64');\n const nonce = Buffer.from(options.envelope.nonce, 'base64');\n const ciphertext = payload.slice(0, payload.length - 16);\n const tag = payload.slice(payload.length - 16);\n const decipher = createDecipheriv('aes-256-gcm', sharedSecret, nonce);\n if (options.envelope.associatedData) {\n decipher.setAAD(Buffer.from(options.envelope.associatedData, 'base64'));\n }\n decipher.setAuthTag(tag);\n const plaintext = Buffer.concat([\n decipher.update(ciphertext),\n decipher.final(),\n ]);\n return plaintext.toString(options.encoding ?? 'utf8');\n }\n\n normalizeSharedSecret(input: SharedSecretInput): Buffer {\n if (Buffer.isBuffer(input)) {\n return Buffer.from(input);\n }\n if (input instanceof Uint8Array) {\n return Buffer.from(input);\n }\n if (typeof input === 'string') {\n return this.bufferFromString(input);\n }\n throw new Error('Unsupported shared secret input');\n }\n\n bufferFromString(value: string): Buffer {\n const trimmed = value.trim();\n if (!trimmed) {\n throw new Error('sharedSecret string cannot be empty');\n }\n const normalized = trimmed.startsWith('0x') ? trimmed.slice(2) : trimmed;\n if (/^[0-9a-fA-F]+$/.test(normalized) && normalized.length % 2 === 0) {\n return Buffer.from(normalized, 'hex');\n }\n return Buffer.from(trimmed, 'base64');\n }\n\n hexToBuffer(value: string): Uint8Array {\n const normalized = value.startsWith('0x') ? value.slice(2) : value;\n if (!/^[0-9a-fA-F]+$/.test(normalized) || normalized.length % 2 !== 0) {\n throw new Error('Expected hex-encoded value');\n }\n return Buffer.from(normalized, 'hex');\n }\n\n extractInsufficientCreditsDetails(error: unknown): {\n shortfallCredits: number;\n } | null {\n if (!(error instanceof RegistryBrokerError) || error.status !== 402) {\n return null;\n }\n\n const body = error.body;\n if (!body || typeof body !== 'object' || Array.isArray(body)) {\n return null;\n }\n\n const maybeShortfall = (body as JsonObject)['shortfallCredits'];\n if (typeof maybeShortfall !== 'number' || maybeShortfall <= 0) {\n return null;\n }\n\n return { shortfallCredits: maybeShortfall };\n }\n\n private extractErrorMessage(body: JsonValue): string | undefined {\n if (typeof body === 'string') {\n return body;\n }\n if (isJsonObject(body) && typeof body.error === 'string') {\n return body.error;\n }\n if (isJsonObject(body) && typeof body.message === 'string') {\n return body.message;\n }\n return undefined;\n }\n\n shouldAutoTopUpHistory(\n payload: CreateSessionRequestPayload,\n error: Error | null,\n ): boolean {\n if (!this.historyAutoTopUp || payload.historyTtlSeconds === undefined) {\n return false;\n }\n if (!(error instanceof RegistryBrokerError)) {\n return false;\n }\n if (error.status !== 402) {\n return false;\n }\n const message = this.extractErrorMessage(error.body);\n if (!message) {\n return true;\n }\n const normalised = message.toLowerCase();\n return (\n normalised.includes('history') || normalised.includes('chat history')\n );\n }\n\n async executeHistoryAutoTopUp(reason: string): Promise<void> {\n if (!this.historyAutoTopUp) {\n return;\n }\n const hbarAmount =\n this.historyAutoTopUp.hbarAmount && this.historyAutoTopUp.hbarAmount > 0\n ? this.historyAutoTopUp.hbarAmount\n : DEFAULT_HISTORY_TOP_UP_HBAR;\n await this.purchaseCreditsWithHbar({\n accountId: this.historyAutoTopUp.accountId,\n privateKey: this.historyAutoTopUp.privateKey,\n hbarAmount,\n memo:\n this.historyAutoTopUp.memo ??\n 'registry-broker-client:chat-history-topup',\n metadata: {\n purpose: 'chat-history',\n reason,\n },\n });\n }\n\n initializeEncryptionBootstrap(\n options: ClientEncryptionOptions,\n ): Promise<void> {\n return this.bootstrapEncryptionOptions(options).then((): void => undefined);\n }\n\n bootstrapEncryptionOptions(\n _options?: ClientEncryptionOptions,\n ): Promise<{ publicKey: string; privateKey?: string } | null> {\n return Promise.resolve(null);\n }\n}\n\nexport const isPendingRegisterAgentResponse = (\n response: RegisterAgentResponse,\n): response is RegisterAgentPendingResponse => response.status === 'pending';\n\nexport const isPartialRegisterAgentResponse = (\n response: RegisterAgentResponse,\n): response is RegisterAgentPartialResponse =>\n response.status === 'partial' && response.success === false;\n\nexport const isSuccessRegisterAgentResponse = (\n response: RegisterAgentResponse,\n): response is RegisterAgentSuccessResponse =>\n response.success === true && response.status !== 'pending';\n"],"names":[],"mappings":"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"}
@@ -1,369 +1,20 @@
1
- import { Buffer } from "buffer";
2
- import { randomBytes, createHash, createCipheriv, createDecipheriv } from "crypto";
3
- import { secp256k1 } from "@noble/curves/secp256k1.js";
4
- import { ZodError } from "zod";
5
- import { DEFAULT_BASE_URL, normaliseBaseUrl, normaliseHeaderName, isBrowserRuntime, DEFAULT_USER_AGENT, JSON_CONTENT_TYPE, createAbortError, isJsonObject, DEFAULT_HISTORY_TOP_UP_HBAR } from "./standards-sdk.es158.js";
6
- import { RegistryBrokerError, RegistryBrokerParseError } from "./standards-sdk.es137.js";
7
- class RegistryBrokerClient {
8
- constructor(options = {}) {
9
- this.encryptionBootstrapPromise = null;
10
- const {
11
- baseUrl = DEFAULT_BASE_URL,
12
- fetchImplementation,
13
- defaultHeaders,
14
- apiKey,
15
- ledgerApiKey,
16
- registrationAutoTopUp,
17
- historyAutoTopUp,
18
- encryption
19
- } = options;
20
- this.baseUrl = normaliseBaseUrl(baseUrl);
21
- this.fetchImpl = fetchImplementation ?? fetch;
22
- this.defaultHeaders = {
23
- ...defaultHeaders ?? {}
24
- };
25
- Object.entries(this.defaultHeaders).forEach(([key, value]) => {
26
- const headerName = normaliseHeaderName(key);
27
- if (headerName !== key) {
28
- delete this.defaultHeaders[key];
29
- this.defaultHeaders[headerName] = value;
30
- }
31
- });
32
- if (apiKey) {
33
- this.defaultHeaders["x-api-key"] = apiKey;
34
- }
35
- if (ledgerApiKey) {
36
- this.defaultHeaders["x-ledger-api-key"] = ledgerApiKey;
37
- }
38
- this.registrationAutoTopUp = registrationAutoTopUp;
39
- this.historyAutoTopUp = historyAutoTopUp;
40
- this.encryptionOptions = encryption;
41
- if (this.encryptionOptions) {
42
- this.encryptionBootstrapPromise = this.initializeEncryptionBootstrap(
43
- this.encryptionOptions
44
- );
45
- }
1
+ class RegistryBrokerError extends Error {
2
+ constructor(message, details) {
3
+ super(message);
4
+ this.status = details.status;
5
+ this.statusText = details.statusText;
6
+ this.body = details.body;
46
7
  }
47
- static async initializeAgent(options) {
48
- const { uaid, ensureEncryptionKey = true, ...clientOptions } = options;
49
- const client = new RegistryBrokerClient(clientOptions);
50
- let encryption = null;
51
- if (ensureEncryptionKey) {
52
- const ensureOptions = typeof ensureEncryptionKey === "object" ? ensureEncryptionKey : { generateIfMissing: true };
53
- encryption = await client.encryption.ensureAgentKey({
54
- uaid,
55
- ...ensureOptions
56
- });
57
- }
58
- return { client, encryption };
59
- }
60
- setApiKey(apiKey) {
61
- this.setDefaultHeader("x-api-key", apiKey);
62
- }
63
- setLedgerApiKey(apiKey) {
64
- this.setDefaultHeader("x-ledger-api-key", apiKey);
65
- }
66
- setDefaultHeader(name, value) {
67
- if (!name || name.trim().length === 0) {
68
- return;
69
- }
70
- const headerName = normaliseHeaderName(name);
71
- if (!value || value.trim().length === 0) {
72
- delete this.defaultHeaders[headerName];
73
- return;
74
- }
75
- this.defaultHeaders[headerName] = value.trim();
76
- }
77
- getDefaultHeaders() {
78
- return { ...this.defaultHeaders };
79
- }
80
- async encryptionReady() {
81
- if (!this.encryptionBootstrapPromise) {
82
- return;
83
- }
84
- await this.encryptionBootstrapPromise;
85
- }
86
- buildUrl(path) {
87
- const normalisedPath = path.startsWith("/") ? path : `/${path}`;
88
- return `${this.baseUrl}${normalisedPath}`;
89
- }
90
- async request(path, config) {
91
- const headers = new Headers();
92
- Object.entries(this.defaultHeaders).forEach(([key, value]) => {
93
- headers.set(key, value);
94
- });
95
- if (config.headers) {
96
- Object.entries(config.headers).forEach(([key, value]) => {
97
- headers.set(key, value);
98
- });
99
- }
100
- if (!headers.has("accept")) {
101
- headers.set("accept", "application/json");
102
- }
103
- if (!headers.has("user-agent") && !isBrowserRuntime()) {
104
- headers.set("user-agent", DEFAULT_USER_AGENT);
105
- }
106
- const init = {
107
- method: config.method ?? "GET",
108
- headers
109
- };
110
- if (config.body !== void 0) {
111
- init.body = JSON.stringify(config.body);
112
- if (!headers.has("content-type")) {
113
- headers.set("content-type", "application/json");
114
- }
115
- }
116
- const response = await this.fetchImpl(this.buildUrl(path), init);
117
- if (response.ok) {
118
- return response;
119
- }
120
- const errorBody = await this.extractErrorBody(response);
121
- throw new RegistryBrokerError("Registry broker request failed", {
122
- status: response.status,
123
- statusText: response.statusText,
124
- body: errorBody
125
- });
126
- }
127
- async requestJson(path, config) {
128
- const response = await this.request(path, config);
129
- const contentType = response.headers?.get("content-type") ?? "";
130
- if (!JSON_CONTENT_TYPE.test(contentType)) {
131
- const body = await response.text();
132
- throw new RegistryBrokerParseError(
133
- "Expected JSON response from registry broker",
134
- body
135
- );
136
- }
137
- return await response.json();
138
- }
139
- async extractErrorBody(response) {
140
- const contentType = response.headers?.get("content-type") ?? "";
141
- if (JSON_CONTENT_TYPE.test(contentType)) {
142
- try {
143
- return await response.json();
144
- } catch (error) {
145
- return { parseError: String(error) };
146
- }
147
- }
148
- try {
149
- return await response.text();
150
- } catch (error) {
151
- return { parseError: String(error) };
152
- }
153
- }
154
- parseWithSchema(value, schema, context) {
155
- try {
156
- return schema.parse(value);
157
- } catch (error) {
158
- throw new RegistryBrokerParseError(
159
- `Failed to parse ${context}`,
160
- error instanceof ZodError || error instanceof Error ? error : String(error),
161
- value
162
- );
163
- }
164
- }
165
- async delay(ms, signal) {
166
- if (ms <= 0) {
167
- if (signal?.aborted) {
168
- throw createAbortError();
169
- }
170
- return;
171
- }
172
- await new Promise((resolve, reject) => {
173
- const timer = setTimeout(() => {
174
- if (signal) {
175
- signal.removeEventListener("abort", onAbort);
176
- }
177
- resolve();
178
- }, ms);
179
- const onAbort = () => {
180
- clearTimeout(timer);
181
- signal?.removeEventListener("abort", onAbort);
182
- reject(createAbortError());
183
- };
184
- if (signal) {
185
- if (signal.aborted) {
186
- clearTimeout(timer);
187
- reject(createAbortError());
188
- return;
189
- }
190
- signal.addEventListener("abort", onAbort, { once: true });
191
- }
192
- });
193
- }
194
- assertNodeRuntime(feature) {
195
- if (typeof process === "undefined" || !process.versions?.node) {
196
- throw new Error(`${feature} is only available in Node.js environments`);
197
- }
198
- }
199
- createEphemeralKeyPair() {
200
- this.assertNodeRuntime("generateEphemeralKeyPair");
201
- const privateKeyBytes = randomBytes(32);
202
- const publicKey = secp256k1.getPublicKey(privateKeyBytes, true);
203
- return {
204
- privateKey: Buffer.from(privateKeyBytes).toString("hex"),
205
- publicKey: Buffer.from(publicKey).toString("hex")
206
- };
207
- }
208
- deriveSharedSecret(options) {
209
- this.assertNodeRuntime("deriveSharedSecret");
210
- const privateKey = this.hexToBuffer(options.privateKey);
211
- const peerPublicKey = this.hexToBuffer(options.peerPublicKey);
212
- const shared = secp256k1.getSharedSecret(privateKey, peerPublicKey, true);
213
- return createHash("sha256").update(Buffer.from(shared)).digest();
214
- }
215
- buildCipherEnvelope(options) {
216
- this.assertNodeRuntime("encryptCipherEnvelope");
217
- const sharedSecret = this.normalizeSharedSecret(options.sharedSecret);
218
- const iv = randomBytes(12);
219
- const cipher = createCipheriv("aes-256-gcm", sharedSecret, iv);
220
- const aadSource = options.associatedData ?? options.sessionId;
221
- const associatedDataEncoded = aadSource ? Buffer.from(aadSource, "utf8").toString("base64") : void 0;
222
- if (aadSource) {
223
- cipher.setAAD(Buffer.from(aadSource, "utf8"));
224
- }
225
- const ciphertext = Buffer.concat([
226
- cipher.update(Buffer.from(options.plaintext, "utf8")),
227
- cipher.final()
228
- ]);
229
- const tag = cipher.getAuthTag();
230
- const payload = Buffer.concat([ciphertext, tag]);
231
- return {
232
- algorithm: "aes-256-gcm",
233
- ciphertext: payload.toString("base64"),
234
- nonce: iv.toString("base64"),
235
- associatedData: associatedDataEncoded,
236
- keyLocator: {
237
- sessionId: options.sessionId,
238
- revision: options.revision ?? 1
239
- },
240
- recipients: options.recipients.map((recipient) => ({
241
- ...recipient,
242
- encryptedShare: ""
243
- }))
244
- };
245
- }
246
- openCipherEnvelope(options) {
247
- this.assertNodeRuntime("decryptCipherEnvelope");
248
- const sharedSecret = this.normalizeSharedSecret(options.sharedSecret);
249
- const payload = Buffer.from(options.envelope.ciphertext, "base64");
250
- const nonce = Buffer.from(options.envelope.nonce, "base64");
251
- const ciphertext = payload.slice(0, payload.length - 16);
252
- const tag = payload.slice(payload.length - 16);
253
- const decipher = createDecipheriv("aes-256-gcm", sharedSecret, nonce);
254
- if (options.envelope.associatedData) {
255
- decipher.setAAD(Buffer.from(options.envelope.associatedData, "base64"));
256
- }
257
- decipher.setAuthTag(tag);
258
- const plaintext = Buffer.concat([
259
- decipher.update(ciphertext),
260
- decipher.final()
261
- ]);
262
- return plaintext.toString(options.encoding ?? "utf8");
263
- }
264
- normalizeSharedSecret(input) {
265
- if (Buffer.isBuffer(input)) {
266
- return Buffer.from(input);
267
- }
268
- if (input instanceof Uint8Array) {
269
- return Buffer.from(input);
270
- }
271
- if (typeof input === "string") {
272
- return this.bufferFromString(input);
273
- }
274
- throw new Error("Unsupported shared secret input");
275
- }
276
- bufferFromString(value) {
277
- const trimmed = value.trim();
278
- if (!trimmed) {
279
- throw new Error("sharedSecret string cannot be empty");
280
- }
281
- const normalized = trimmed.startsWith("0x") ? trimmed.slice(2) : trimmed;
282
- if (/^[0-9a-fA-F]+$/.test(normalized) && normalized.length % 2 === 0) {
283
- return Buffer.from(normalized, "hex");
284
- }
285
- return Buffer.from(trimmed, "base64");
286
- }
287
- hexToBuffer(value) {
288
- const normalized = value.startsWith("0x") ? value.slice(2) : value;
289
- if (!/^[0-9a-fA-F]+$/.test(normalized) || normalized.length % 2 !== 0) {
290
- throw new Error("Expected hex-encoded value");
291
- }
292
- return Buffer.from(normalized, "hex");
293
- }
294
- extractInsufficientCreditsDetails(error) {
295
- if (!(error instanceof RegistryBrokerError) || error.status !== 402) {
296
- return null;
297
- }
298
- const body = error.body;
299
- if (!body || typeof body !== "object" || Array.isArray(body)) {
300
- return null;
301
- }
302
- const maybeShortfall = body["shortfallCredits"];
303
- if (typeof maybeShortfall !== "number" || maybeShortfall <= 0) {
304
- return null;
305
- }
306
- return { shortfallCredits: maybeShortfall };
307
- }
308
- extractErrorMessage(body) {
309
- if (typeof body === "string") {
310
- return body;
311
- }
312
- if (isJsonObject(body) && typeof body.error === "string") {
313
- return body.error;
314
- }
315
- if (isJsonObject(body) && typeof body.message === "string") {
316
- return body.message;
317
- }
318
- return void 0;
319
- }
320
- shouldAutoTopUpHistory(payload, error) {
321
- if (!this.historyAutoTopUp || payload.historyTtlSeconds === void 0) {
322
- return false;
323
- }
324
- if (!(error instanceof RegistryBrokerError)) {
325
- return false;
326
- }
327
- if (error.status !== 402) {
328
- return false;
329
- }
330
- const message = this.extractErrorMessage(error.body);
331
- if (!message) {
332
- return true;
333
- }
334
- const normalised = message.toLowerCase();
335
- return normalised.includes("history") || normalised.includes("chat history");
336
- }
337
- async executeHistoryAutoTopUp(reason) {
338
- if (!this.historyAutoTopUp) {
339
- return;
340
- }
341
- const hbarAmount = this.historyAutoTopUp.hbarAmount && this.historyAutoTopUp.hbarAmount > 0 ? this.historyAutoTopUp.hbarAmount : DEFAULT_HISTORY_TOP_UP_HBAR;
342
- await this.purchaseCreditsWithHbar({
343
- accountId: this.historyAutoTopUp.accountId,
344
- privateKey: this.historyAutoTopUp.privateKey,
345
- hbarAmount,
346
- memo: this.historyAutoTopUp.memo ?? "registry-broker-client:chat-history-topup",
347
- metadata: {
348
- purpose: "chat-history",
349
- reason
350
- }
351
- });
352
- }
353
- initializeEncryptionBootstrap(options) {
354
- return this.bootstrapEncryptionOptions(options).then(() => void 0);
355
- }
356
- bootstrapEncryptionOptions(_options) {
357
- return Promise.resolve(null);
8
+ }
9
+ class RegistryBrokerParseError extends Error {
10
+ constructor(message, cause, rawValue) {
11
+ super(message);
12
+ this.cause = cause;
13
+ this.rawValue = rawValue;
358
14
  }
359
15
  }
360
- const isPendingRegisterAgentResponse = (response) => response.status === "pending";
361
- const isPartialRegisterAgentResponse = (response) => response.status === "partial" && response.success === false;
362
- const isSuccessRegisterAgentResponse = (response) => response.success === true && response.status !== "pending";
363
16
  export {
364
- RegistryBrokerClient,
365
- isPartialRegisterAgentResponse,
366
- isPendingRegisterAgentResponse,
367
- isSuccessRegisterAgentResponse
17
+ RegistryBrokerError,
18
+ RegistryBrokerParseError
368
19
  };
369
20
  //# sourceMappingURL=standards-sdk.es136.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es136.js","sources":["../../src/services/registry-broker/client/base-client.ts"],"sourcesContent":["import { Buffer } from 'buffer';\nimport {\n createCipheriv,\n createDecipheriv,\n createHash,\n randomBytes,\n} from 'crypto';\nimport { secp256k1 } from '@noble/curves/secp256k1.js';\nimport { ZodError, z } from 'zod';\nimport type {\n AutoTopUpOptions,\n ClientEncryptionOptions,\n CreateSessionRequestPayload,\n DeriveSharedSecretOptions,\n DecryptCipherEnvelopeOptions,\n EncryptCipherEnvelopeOptions,\n EphemeralKeyPair,\n HistoryAutoTopUpOptions,\n InitializeAgentClientOptions,\n JsonObject,\n JsonValue,\n RegisterAgentResponse,\n RegisterAgentPartialResponse,\n RegisterAgentPendingResponse,\n RegisterAgentSuccessResponse,\n RegistryBrokerClientOptions,\n SharedSecretInput,\n} from '../types';\nimport {\n createAbortError,\n DEFAULT_BASE_URL,\n DEFAULT_HISTORY_TOP_UP_HBAR,\n DEFAULT_USER_AGENT,\n JSON_CONTENT_TYPE,\n isJsonObject,\n isBrowserRuntime,\n normaliseBaseUrl,\n normaliseHeaderName,\n} from './utils';\nimport {\n RegistryBrokerError,\n RegistryBrokerParseError,\n type ErrorDetails,\n} from './errors';\nexport interface InitializedAgentClient {\n client: RegistryBrokerClient;\n encryption?: { publicKey: string; privateKey?: string } | null;\n}\nexport interface GenerateEncryptionKeyPairOptions {\n keyType?: 'secp256k1';\n envVar?: string;\n envPath?: string;\n overwrite?: boolean;\n}\nexport interface RequestConfig {\n method?: string;\n body?: unknown;\n headers?: Record<string, string>;\n}\nexport class RegistryBrokerClient {\n static async initializeAgent(\n options: InitializeAgentClientOptions,\n ): Promise<InitializedAgentClient> {\n const { uaid, ensureEncryptionKey = true, ...clientOptions } = options;\n const client = new RegistryBrokerClient(clientOptions);\n let encryption: { publicKey: string; privateKey?: string } | null = null;\n if (ensureEncryptionKey) {\n const ensureOptions =\n typeof ensureEncryptionKey === 'object'\n ? ensureEncryptionKey\n : { generateIfMissing: true };\n encryption = await client.encryption.ensureAgentKey({\n uaid,\n ...ensureOptions,\n });\n }\n return { client, encryption };\n }\n readonly baseUrl: string;\n readonly fetchImpl: typeof fetch;\n readonly defaultHeaders: Record<string, string>;\n readonly registrationAutoTopUp?: AutoTopUpOptions;\n readonly historyAutoTopUp?: HistoryAutoTopUpOptions;\n readonly encryptionOptions?: ClientEncryptionOptions;\n encryptionBootstrapPromise: Promise<void> | null = null;\n constructor(options: RegistryBrokerClientOptions = {}) {\n const {\n baseUrl = DEFAULT_BASE_URL,\n fetchImplementation,\n defaultHeaders,\n apiKey,\n ledgerApiKey,\n registrationAutoTopUp,\n historyAutoTopUp,\n encryption,\n } = options;\n this.baseUrl = normaliseBaseUrl(baseUrl);\n this.fetchImpl = fetchImplementation ?? fetch;\n this.defaultHeaders = {\n ...(defaultHeaders ?? {}),\n };\n Object.entries(this.defaultHeaders).forEach(([key, value]) => {\n const headerName = normaliseHeaderName(key);\n if (headerName !== key) {\n delete this.defaultHeaders[key];\n this.defaultHeaders[headerName] = value;\n }\n });\n if (apiKey) {\n this.defaultHeaders['x-api-key'] = apiKey;\n }\n if (ledgerApiKey) {\n this.defaultHeaders['x-ledger-api-key'] = ledgerApiKey;\n }\n this.registrationAutoTopUp = registrationAutoTopUp;\n this.historyAutoTopUp = historyAutoTopUp;\n this.encryptionOptions = encryption;\n\n if (this.encryptionOptions) {\n this.encryptionBootstrapPromise = this.initializeEncryptionBootstrap(\n this.encryptionOptions,\n );\n }\n }\n\n setApiKey(apiKey?: string): void {\n this.setDefaultHeader('x-api-key', apiKey);\n }\n\n setLedgerApiKey(apiKey?: string): void {\n this.setDefaultHeader('x-ledger-api-key', apiKey);\n }\n\n setDefaultHeader(name: string, value?: string | null): void {\n if (!name || name.trim().length === 0) {\n return;\n }\n const headerName = normaliseHeaderName(name);\n if (!value || value.trim().length === 0) {\n delete this.defaultHeaders[headerName];\n return;\n }\n this.defaultHeaders[headerName] = value.trim();\n }\n\n getDefaultHeaders(): Record<string, string> {\n return { ...this.defaultHeaders };\n }\n\n async encryptionReady(): Promise<void> {\n if (!this.encryptionBootstrapPromise) {\n return;\n }\n await this.encryptionBootstrapPromise;\n }\n\n buildUrl(path: string): string {\n const normalisedPath = path.startsWith('/') ? path : `/${path}`;\n return `${this.baseUrl}${normalisedPath}`;\n }\n\n async request(path: string, config: RequestConfig): Promise<Response> {\n const headers = new Headers();\n Object.entries(this.defaultHeaders).forEach(([key, value]) => {\n headers.set(key, value);\n });\n if (config.headers) {\n Object.entries(config.headers).forEach(([key, value]) => {\n headers.set(key, value);\n });\n }\n if (!headers.has('accept')) {\n headers.set('accept', 'application/json');\n }\n if (!headers.has('user-agent') && !isBrowserRuntime()) {\n headers.set('user-agent', DEFAULT_USER_AGENT);\n }\n\n const init: RequestInit = {\n method: config.method ?? 'GET',\n headers,\n };\n\n if (config.body !== undefined) {\n init.body = JSON.stringify(config.body);\n if (!headers.has('content-type')) {\n headers.set('content-type', 'application/json');\n }\n }\n\n const response = await this.fetchImpl(this.buildUrl(path), init);\n if (response.ok) {\n return response;\n }\n const errorBody = await this.extractErrorBody(response);\n throw new RegistryBrokerError('Registry broker request failed', {\n status: response.status,\n statusText: response.statusText,\n body: errorBody,\n });\n }\n\n async requestJson<T extends JsonValue = JsonValue>(\n path: string,\n config: RequestConfig,\n ): Promise<T> {\n const response = await this.request(path, config);\n const contentType = response.headers?.get('content-type') ?? '';\n if (!JSON_CONTENT_TYPE.test(contentType)) {\n const body = await response.text();\n throw new RegistryBrokerParseError(\n 'Expected JSON response from registry broker',\n body,\n );\n }\n return (await response.json()) as T;\n }\n\n private async extractErrorBody(response: Response): Promise<JsonValue> {\n const contentType = response.headers?.get('content-type') ?? '';\n if (JSON_CONTENT_TYPE.test(contentType)) {\n try {\n return (await response.json()) as JsonValue;\n } catch (error) {\n return { parseError: String(error) };\n }\n }\n try {\n return await response.text();\n } catch (error) {\n return { parseError: String(error) };\n }\n }\n\n parseWithSchema<T>(\n value: JsonValue,\n schema: z.ZodSchema<T>,\n context: string,\n ): T {\n try {\n return schema.parse(value);\n } catch (error) {\n throw new RegistryBrokerParseError(\n `Failed to parse ${context}`,\n error instanceof ZodError || error instanceof Error\n ? error\n : String(error),\n value,\n );\n }\n }\n\n async delay(ms: number, signal?: AbortSignal): Promise<void> {\n if (ms <= 0) {\n if (signal?.aborted) {\n throw createAbortError();\n }\n return;\n }\n\n await new Promise<void>((resolve, reject) => {\n const timer = setTimeout(() => {\n if (signal) {\n signal.removeEventListener('abort', onAbort);\n }\n resolve();\n }, ms);\n\n const onAbort = (): void => {\n clearTimeout(timer);\n signal?.removeEventListener('abort', onAbort);\n reject(createAbortError());\n };\n\n if (signal) {\n if (signal.aborted) {\n clearTimeout(timer);\n reject(createAbortError());\n return;\n }\n signal.addEventListener('abort', onAbort, { once: true });\n }\n });\n }\n\n assertNodeRuntime(feature: string): void {\n if (typeof process === 'undefined' || !process.versions?.node) {\n throw new Error(`${feature} is only available in Node.js environments`);\n }\n }\n\n createEphemeralKeyPair(): EphemeralKeyPair {\n this.assertNodeRuntime('generateEphemeralKeyPair');\n const privateKeyBytes = randomBytes(32);\n const publicKey = secp256k1.getPublicKey(privateKeyBytes, true);\n return {\n privateKey: Buffer.from(privateKeyBytes).toString('hex'),\n publicKey: Buffer.from(publicKey).toString('hex'),\n };\n }\n\n deriveSharedSecret(options: DeriveSharedSecretOptions): Buffer {\n this.assertNodeRuntime('deriveSharedSecret');\n const privateKey = this.hexToBuffer(options.privateKey);\n const peerPublicKey = this.hexToBuffer(options.peerPublicKey);\n const shared = secp256k1.getSharedSecret(privateKey, peerPublicKey, true);\n return createHash('sha256').update(Buffer.from(shared)).digest();\n }\n\n buildCipherEnvelope(options: EncryptCipherEnvelopeOptions) {\n this.assertNodeRuntime('encryptCipherEnvelope');\n const sharedSecret = this.normalizeSharedSecret(options.sharedSecret);\n const iv = randomBytes(12);\n const cipher = createCipheriv('aes-256-gcm', sharedSecret, iv);\n const aadSource = options.associatedData ?? options.sessionId;\n const associatedDataEncoded = aadSource\n ? Buffer.from(aadSource, 'utf8').toString('base64')\n : undefined;\n if (aadSource) {\n cipher.setAAD(Buffer.from(aadSource, 'utf8'));\n }\n const ciphertext = Buffer.concat([\n cipher.update(Buffer.from(options.plaintext, 'utf8')),\n cipher.final(),\n ]);\n const tag = cipher.getAuthTag();\n const payload = Buffer.concat([ciphertext, tag]);\n\n return {\n algorithm: 'aes-256-gcm',\n ciphertext: payload.toString('base64'),\n nonce: iv.toString('base64'),\n associatedData: associatedDataEncoded,\n keyLocator: {\n sessionId: options.sessionId,\n revision: options.revision ?? 1,\n },\n recipients: options.recipients.map(recipient => ({\n ...recipient,\n encryptedShare: '',\n })),\n };\n }\n\n openCipherEnvelope(options: DecryptCipherEnvelopeOptions): string {\n this.assertNodeRuntime('decryptCipherEnvelope');\n const sharedSecret = this.normalizeSharedSecret(options.sharedSecret);\n const payload = Buffer.from(options.envelope.ciphertext, 'base64');\n const nonce = Buffer.from(options.envelope.nonce, 'base64');\n const ciphertext = payload.slice(0, payload.length - 16);\n const tag = payload.slice(payload.length - 16);\n const decipher = createDecipheriv('aes-256-gcm', sharedSecret, nonce);\n if (options.envelope.associatedData) {\n decipher.setAAD(Buffer.from(options.envelope.associatedData, 'base64'));\n }\n decipher.setAuthTag(tag);\n const plaintext = Buffer.concat([\n decipher.update(ciphertext),\n decipher.final(),\n ]);\n return plaintext.toString(options.encoding ?? 'utf8');\n }\n\n normalizeSharedSecret(input: SharedSecretInput): Buffer {\n if (Buffer.isBuffer(input)) {\n return Buffer.from(input);\n }\n if (input instanceof Uint8Array) {\n return Buffer.from(input);\n }\n if (typeof input === 'string') {\n return this.bufferFromString(input);\n }\n throw new Error('Unsupported shared secret input');\n }\n\n bufferFromString(value: string): Buffer {\n const trimmed = value.trim();\n if (!trimmed) {\n throw new Error('sharedSecret string cannot be empty');\n }\n const normalized = trimmed.startsWith('0x') ? trimmed.slice(2) : trimmed;\n if (/^[0-9a-fA-F]+$/.test(normalized) && normalized.length % 2 === 0) {\n return Buffer.from(normalized, 'hex');\n }\n return Buffer.from(trimmed, 'base64');\n }\n\n hexToBuffer(value: string): Uint8Array {\n const normalized = value.startsWith('0x') ? value.slice(2) : value;\n if (!/^[0-9a-fA-F]+$/.test(normalized) || normalized.length % 2 !== 0) {\n throw new Error('Expected hex-encoded value');\n }\n return Buffer.from(normalized, 'hex');\n }\n\n extractInsufficientCreditsDetails(error: unknown): {\n shortfallCredits: number;\n } | null {\n if (!(error instanceof RegistryBrokerError) || error.status !== 402) {\n return null;\n }\n\n const body = error.body;\n if (!body || typeof body !== 'object' || Array.isArray(body)) {\n return null;\n }\n\n const maybeShortfall = (body as JsonObject)['shortfallCredits'];\n if (typeof maybeShortfall !== 'number' || maybeShortfall <= 0) {\n return null;\n }\n\n return { shortfallCredits: maybeShortfall };\n }\n\n private extractErrorMessage(body: JsonValue): string | undefined {\n if (typeof body === 'string') {\n return body;\n }\n if (isJsonObject(body) && typeof body.error === 'string') {\n return body.error;\n }\n if (isJsonObject(body) && typeof body.message === 'string') {\n return body.message;\n }\n return undefined;\n }\n\n shouldAutoTopUpHistory(\n payload: CreateSessionRequestPayload,\n error: Error | null,\n ): boolean {\n if (!this.historyAutoTopUp || payload.historyTtlSeconds === undefined) {\n return false;\n }\n if (!(error instanceof RegistryBrokerError)) {\n return false;\n }\n if (error.status !== 402) {\n return false;\n }\n const message = this.extractErrorMessage(error.body);\n if (!message) {\n return true;\n }\n const normalised = message.toLowerCase();\n return (\n normalised.includes('history') || normalised.includes('chat history')\n );\n }\n\n async executeHistoryAutoTopUp(reason: string): Promise<void> {\n if (!this.historyAutoTopUp) {\n return;\n }\n const hbarAmount =\n this.historyAutoTopUp.hbarAmount && this.historyAutoTopUp.hbarAmount > 0\n ? this.historyAutoTopUp.hbarAmount\n : DEFAULT_HISTORY_TOP_UP_HBAR;\n await this.purchaseCreditsWithHbar({\n accountId: this.historyAutoTopUp.accountId,\n privateKey: this.historyAutoTopUp.privateKey,\n hbarAmount,\n memo:\n this.historyAutoTopUp.memo ??\n 'registry-broker-client:chat-history-topup',\n metadata: {\n purpose: 'chat-history',\n reason,\n },\n });\n }\n\n initializeEncryptionBootstrap(\n options: ClientEncryptionOptions,\n ): Promise<void> {\n return this.bootstrapEncryptionOptions(options).then((): void => undefined);\n }\n\n bootstrapEncryptionOptions(\n _options?: ClientEncryptionOptions,\n ): Promise<{ publicKey: string; privateKey?: string } | null> {\n return Promise.resolve(null);\n }\n}\n\nexport const isPendingRegisterAgentResponse = (\n response: RegisterAgentResponse,\n): response is RegisterAgentPendingResponse => response.status === 'pending';\n\nexport const isPartialRegisterAgentResponse = (\n response: RegisterAgentResponse,\n): response is RegisterAgentPartialResponse =>\n response.status === 'partial' && response.success === false;\n\nexport const isSuccessRegisterAgentResponse = (\n response: RegisterAgentResponse,\n): response is RegisterAgentSuccessResponse =>\n response.success === true && response.status !== 'pending';\n"],"names":[],"mappings":";;;;;;AA2DO,MAAM,qBAAqB;AAAA,EA0BhC,YAAY,UAAuC,IAAI;AADvD,SAAA,6BAAmD;AAEjD,UAAM;AAAA,MACJ,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACE;AACJ,SAAK,UAAU,iBAAiB,OAAO;AACvC,SAAK,YAAY,uBAAuB;AACxC,SAAK,iBAAiB;AAAA,MACpB,GAAI,kBAAkB,CAAA;AAAA,IAAC;AAEzB,WAAO,QAAQ,KAAK,cAAc,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC5D,YAAM,aAAa,oBAAoB,GAAG;AAC1C,UAAI,eAAe,KAAK;AACtB,eAAO,KAAK,eAAe,GAAG;AAC9B,aAAK,eAAe,UAAU,IAAI;AAAA,MACpC;AAAA,IACF,CAAC;AACD,QAAI,QAAQ;AACV,WAAK,eAAe,WAAW,IAAI;AAAA,IACrC;AACA,QAAI,cAAc;AAChB,WAAK,eAAe,kBAAkB,IAAI;AAAA,IAC5C;AACA,SAAK,wBAAwB;AAC7B,SAAK,mBAAmB;AACxB,SAAK,oBAAoB;AAEzB,QAAI,KAAK,mBAAmB;AAC1B,WAAK,6BAA6B,KAAK;AAAA,QACrC,KAAK;AAAA,MAAA;AAAA,IAET;AAAA,EACF;AAAA,EA/DA,aAAa,gBACX,SACiC;AACjC,UAAM,EAAE,MAAM,sBAAsB,MAAM,GAAG,kBAAkB;AAC/D,UAAM,SAAS,IAAI,qBAAqB,aAAa;AACrD,QAAI,aAAgE;AACpE,QAAI,qBAAqB;AACvB,YAAM,gBACJ,OAAO,wBAAwB,WAC3B,sBACA,EAAE,mBAAmB,KAAA;AAC3B,mBAAa,MAAM,OAAO,WAAW,eAAe;AAAA,QAClD;AAAA,QACA,GAAG;AAAA,MAAA,CACJ;AAAA,IACH;AACA,WAAO,EAAE,QAAQ,WAAA;AAAA,EACnB;AAAA,EAgDA,UAAU,QAAuB;AAC/B,SAAK,iBAAiB,aAAa,MAAM;AAAA,EAC3C;AAAA,EAEA,gBAAgB,QAAuB;AACrC,SAAK,iBAAiB,oBAAoB,MAAM;AAAA,EAClD;AAAA,EAEA,iBAAiB,MAAc,OAA6B;AAC1D,QAAI,CAAC,QAAQ,KAAK,KAAA,EAAO,WAAW,GAAG;AACrC;AAAA,IACF;AACA,UAAM,aAAa,oBAAoB,IAAI;AAC3C,QAAI,CAAC,SAAS,MAAM,KAAA,EAAO,WAAW,GAAG;AACvC,aAAO,KAAK,eAAe,UAAU;AACrC;AAAA,IACF;AACA,SAAK,eAAe,UAAU,IAAI,MAAM,KAAA;AAAA,EAC1C;AAAA,EAEA,oBAA4C;AAC1C,WAAO,EAAE,GAAG,KAAK,eAAA;AAAA,EACnB;AAAA,EAEA,MAAM,kBAAiC;AACrC,QAAI,CAAC,KAAK,4BAA4B;AACpC;AAAA,IACF;AACA,UAAM,KAAK;AAAA,EACb;AAAA,EAEA,SAAS,MAAsB;AAC7B,UAAM,iBAAiB,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI,IAAI;AAC7D,WAAO,GAAG,KAAK,OAAO,GAAG,cAAc;AAAA,EACzC;AAAA,EAEA,MAAM,QAAQ,MAAc,QAA0C;AACpE,UAAM,UAAU,IAAI,QAAA;AACpB,WAAO,QAAQ,KAAK,cAAc,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AAC5D,cAAQ,IAAI,KAAK,KAAK;AAAA,IACxB,CAAC;AACD,QAAI,OAAO,SAAS;AAClB,aAAO,QAAQ,OAAO,OAAO,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACvD,gBAAQ,IAAI,KAAK,KAAK;AAAA,MACxB,CAAC;AAAA,IACH;AACA,QAAI,CAAC,QAAQ,IAAI,QAAQ,GAAG;AAC1B,cAAQ,IAAI,UAAU,kBAAkB;AAAA,IAC1C;AACA,QAAI,CAAC,QAAQ,IAAI,YAAY,KAAK,CAAC,oBAAoB;AACrD,cAAQ,IAAI,cAAc,kBAAkB;AAAA,IAC9C;AAEA,UAAM,OAAoB;AAAA,MACxB,QAAQ,OAAO,UAAU;AAAA,MACzB;AAAA,IAAA;AAGF,QAAI,OAAO,SAAS,QAAW;AAC7B,WAAK,OAAO,KAAK,UAAU,OAAO,IAAI;AACtC,UAAI,CAAC,QAAQ,IAAI,cAAc,GAAG;AAChC,gBAAQ,IAAI,gBAAgB,kBAAkB;AAAA,MAChD;AAAA,IACF;AAEA,UAAM,WAAW,MAAM,KAAK,UAAU,KAAK,SAAS,IAAI,GAAG,IAAI;AAC/D,QAAI,SAAS,IAAI;AACf,aAAO;AAAA,IACT;AACA,UAAM,YAAY,MAAM,KAAK,iBAAiB,QAAQ;AACtD,UAAM,IAAI,oBAAoB,kCAAkC;AAAA,MAC9D,QAAQ,SAAS;AAAA,MACjB,YAAY,SAAS;AAAA,MACrB,MAAM;AAAA,IAAA,CACP;AAAA,EACH;AAAA,EAEA,MAAM,YACJ,MACA,QACY;AACZ,UAAM,WAAW,MAAM,KAAK,QAAQ,MAAM,MAAM;AAChD,UAAM,cAAc,SAAS,SAAS,IAAI,cAAc,KAAK;AAC7D,QAAI,CAAC,kBAAkB,KAAK,WAAW,GAAG;AACxC,YAAM,OAAO,MAAM,SAAS,KAAA;AAC5B,YAAM,IAAI;AAAA,QACR;AAAA,QACA;AAAA,MAAA;AAAA,IAEJ;AACA,WAAQ,MAAM,SAAS,KAAA;AAAA,EACzB;AAAA,EAEA,MAAc,iBAAiB,UAAwC;AACrE,UAAM,cAAc,SAAS,SAAS,IAAI,cAAc,KAAK;AAC7D,QAAI,kBAAkB,KAAK,WAAW,GAAG;AACvC,UAAI;AACF,eAAQ,MAAM,SAAS,KAAA;AAAA,MACzB,SAAS,OAAO;AACd,eAAO,EAAE,YAAY,OAAO,KAAK,EAAA;AAAA,MACnC;AAAA,IACF;AACA,QAAI;AACF,aAAO,MAAM,SAAS,KAAA;AAAA,IACxB,SAAS,OAAO;AACd,aAAO,EAAE,YAAY,OAAO,KAAK,EAAA;AAAA,IACnC;AAAA,EACF;AAAA,EAEA,gBACE,OACA,QACA,SACG;AACH,QAAI;AACF,aAAO,OAAO,MAAM,KAAK;AAAA,IAC3B,SAAS,OAAO;AACd,YAAM,IAAI;AAAA,QACR,mBAAmB,OAAO;AAAA,QAC1B,iBAAiB,YAAY,iBAAiB,QAC1C,QACA,OAAO,KAAK;AAAA,QAChB;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF;AAAA,EAEA,MAAM,MAAM,IAAY,QAAqC;AAC3D,QAAI,MAAM,GAAG;AACX,UAAI,QAAQ,SAAS;AACnB,cAAM,iBAAA;AAAA,MACR;AACA;AAAA,IACF;AAEA,UAAM,IAAI,QAAc,CAAC,SAAS,WAAW;AAC3C,YAAM,QAAQ,WAAW,MAAM;AAC7B,YAAI,QAAQ;AACV,iBAAO,oBAAoB,SAAS,OAAO;AAAA,QAC7C;AACA,gBAAA;AAAA,MACF,GAAG,EAAE;AAEL,YAAM,UAAU,MAAY;AAC1B,qBAAa,KAAK;AAClB,gBAAQ,oBAAoB,SAAS,OAAO;AAC5C,eAAO,kBAAkB;AAAA,MAC3B;AAEA,UAAI,QAAQ;AACV,YAAI,OAAO,SAAS;AAClB,uBAAa,KAAK;AAClB,iBAAO,kBAAkB;AACzB;AAAA,QACF;AACA,eAAO,iBAAiB,SAAS,SAAS,EAAE,MAAM,MAAM;AAAA,MAC1D;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,kBAAkB,SAAuB;AACvC,QAAI,OAAO,YAAY,eAAe,CAAC,QAAQ,UAAU,MAAM;AAC7D,YAAM,IAAI,MAAM,GAAG,OAAO,4CAA4C;AAAA,IACxE;AAAA,EACF;AAAA,EAEA,yBAA2C;AACzC,SAAK,kBAAkB,0BAA0B;AACjD,UAAM,kBAAkB,YAAY,EAAE;AACtC,UAAM,YAAY,UAAU,aAAa,iBAAiB,IAAI;AAC9D,WAAO;AAAA,MACL,YAAY,OAAO,KAAK,eAAe,EAAE,SAAS,KAAK;AAAA,MACvD,WAAW,OAAO,KAAK,SAAS,EAAE,SAAS,KAAK;AAAA,IAAA;AAAA,EAEpD;AAAA,EAEA,mBAAmB,SAA4C;AAC7D,SAAK,kBAAkB,oBAAoB;AAC3C,UAAM,aAAa,KAAK,YAAY,QAAQ,UAAU;AACtD,UAAM,gBAAgB,KAAK,YAAY,QAAQ,aAAa;AAC5D,UAAM,SAAS,UAAU,gBAAgB,YAAY,eAAe,IAAI;AACxE,WAAO,WAAW,QAAQ,EAAE,OAAO,OAAO,KAAK,MAAM,CAAC,EAAE,OAAA;AAAA,EAC1D;AAAA,EAEA,oBAAoB,SAAuC;AACzD,SAAK,kBAAkB,uBAAuB;AAC9C,UAAM,eAAe,KAAK,sBAAsB,QAAQ,YAAY;AACpE,UAAM,KAAK,YAAY,EAAE;AACzB,UAAM,SAAS,eAAe,eAAe,cAAc,EAAE;AAC7D,UAAM,YAAY,QAAQ,kBAAkB,QAAQ;AACpD,UAAM,wBAAwB,YAC1B,OAAO,KAAK,WAAW,MAAM,EAAE,SAAS,QAAQ,IAChD;AACJ,QAAI,WAAW;AACb,aAAO,OAAO,OAAO,KAAK,WAAW,MAAM,CAAC;AAAA,IAC9C;AACA,UAAM,aAAa,OAAO,OAAO;AAAA,MAC/B,OAAO,OAAO,OAAO,KAAK,QAAQ,WAAW,MAAM,CAAC;AAAA,MACpD,OAAO,MAAA;AAAA,IAAM,CACd;AACD,UAAM,MAAM,OAAO,WAAA;AACnB,UAAM,UAAU,OAAO,OAAO,CAAC,YAAY,GAAG,CAAC;AAE/C,WAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY,QAAQ,SAAS,QAAQ;AAAA,MACrC,OAAO,GAAG,SAAS,QAAQ;AAAA,MAC3B,gBAAgB;AAAA,MAChB,YAAY;AAAA,QACV,WAAW,QAAQ;AAAA,QACnB,UAAU,QAAQ,YAAY;AAAA,MAAA;AAAA,MAEhC,YAAY,QAAQ,WAAW,IAAI,CAAA,eAAc;AAAA,QAC/C,GAAG;AAAA,QACH,gBAAgB;AAAA,MAAA,EAChB;AAAA,IAAA;AAAA,EAEN;AAAA,EAEA,mBAAmB,SAA+C;AAChE,SAAK,kBAAkB,uBAAuB;AAC9C,UAAM,eAAe,KAAK,sBAAsB,QAAQ,YAAY;AACpE,UAAM,UAAU,OAAO,KAAK,QAAQ,SAAS,YAAY,QAAQ;AACjE,UAAM,QAAQ,OAAO,KAAK,QAAQ,SAAS,OAAO,QAAQ;AAC1D,UAAM,aAAa,QAAQ,MAAM,GAAG,QAAQ,SAAS,EAAE;AACvD,UAAM,MAAM,QAAQ,MAAM,QAAQ,SAAS,EAAE;AAC7C,UAAM,WAAW,iBAAiB,eAAe,cAAc,KAAK;AACpE,QAAI,QAAQ,SAAS,gBAAgB;AACnC,eAAS,OAAO,OAAO,KAAK,QAAQ,SAAS,gBAAgB,QAAQ,CAAC;AAAA,IACxE;AACA,aAAS,WAAW,GAAG;AACvB,UAAM,YAAY,OAAO,OAAO;AAAA,MAC9B,SAAS,OAAO,UAAU;AAAA,MAC1B,SAAS,MAAA;AAAA,IAAM,CAChB;AACD,WAAO,UAAU,SAAS,QAAQ,YAAY,MAAM;AAAA,EACtD;AAAA,EAEA,sBAAsB,OAAkC;AACtD,QAAI,OAAO,SAAS,KAAK,GAAG;AAC1B,aAAO,OAAO,KAAK,KAAK;AAAA,IAC1B;AACA,QAAI,iBAAiB,YAAY;AAC/B,aAAO,OAAO,KAAK,KAAK;AAAA,IAC1B;AACA,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,KAAK,iBAAiB,KAAK;AAAA,IACpC;AACA,UAAM,IAAI,MAAM,iCAAiC;AAAA,EACnD;AAAA,EAEA,iBAAiB,OAAuB;AACtC,UAAM,UAAU,MAAM,KAAA;AACtB,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AACA,UAAM,aAAa,QAAQ,WAAW,IAAI,IAAI,QAAQ,MAAM,CAAC,IAAI;AACjE,QAAI,iBAAiB,KAAK,UAAU,KAAK,WAAW,SAAS,MAAM,GAAG;AACpE,aAAO,OAAO,KAAK,YAAY,KAAK;AAAA,IACtC;AACA,WAAO,OAAO,KAAK,SAAS,QAAQ;AAAA,EACtC;AAAA,EAEA,YAAY,OAA2B;AACrC,UAAM,aAAa,MAAM,WAAW,IAAI,IAAI,MAAM,MAAM,CAAC,IAAI;AAC7D,QAAI,CAAC,iBAAiB,KAAK,UAAU,KAAK,WAAW,SAAS,MAAM,GAAG;AACrE,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AACA,WAAO,OAAO,KAAK,YAAY,KAAK;AAAA,EACtC;AAAA,EAEA,kCAAkC,OAEzB;AACP,QAAI,EAAE,iBAAiB,wBAAwB,MAAM,WAAW,KAAK;AACnE,aAAO;AAAA,IACT;AAEA,UAAM,OAAO,MAAM;AACnB,QAAI,CAAC,QAAQ,OAAO,SAAS,YAAY,MAAM,QAAQ,IAAI,GAAG;AAC5D,aAAO;AAAA,IACT;AAEA,UAAM,iBAAkB,KAAoB,kBAAkB;AAC9D,QAAI,OAAO,mBAAmB,YAAY,kBAAkB,GAAG;AAC7D,aAAO;AAAA,IACT;AAEA,WAAO,EAAE,kBAAkB,eAAA;AAAA,EAC7B;AAAA,EAEQ,oBAAoB,MAAqC;AAC/D,QAAI,OAAO,SAAS,UAAU;AAC5B,aAAO;AAAA,IACT;AACA,QAAI,aAAa,IAAI,KAAK,OAAO,KAAK,UAAU,UAAU;AACxD,aAAO,KAAK;AAAA,IACd;AACA,QAAI,aAAa,IAAI,KAAK,OAAO,KAAK,YAAY,UAAU;AAC1D,aAAO,KAAK;AAAA,IACd;AACA,WAAO;AAAA,EACT;AAAA,EAEA,uBACE,SACA,OACS;AACT,QAAI,CAAC,KAAK,oBAAoB,QAAQ,sBAAsB,QAAW;AACrE,aAAO;AAAA,IACT;AACA,QAAI,EAAE,iBAAiB,sBAAsB;AAC3C,aAAO;AAAA,IACT;AACA,QAAI,MAAM,WAAW,KAAK;AACxB,aAAO;AAAA,IACT;AACA,UAAM,UAAU,KAAK,oBAAoB,MAAM,IAAI;AACnD,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACT;AACA,UAAM,aAAa,QAAQ,YAAA;AAC3B,WACE,WAAW,SAAS,SAAS,KAAK,WAAW,SAAS,cAAc;AAAA,EAExE;AAAA,EAEA,MAAM,wBAAwB,QAA+B;AAC3D,QAAI,CAAC,KAAK,kBAAkB;AAC1B;AAAA,IACF;AACA,UAAM,aACJ,KAAK,iBAAiB,cAAc,KAAK,iBAAiB,aAAa,IACnE,KAAK,iBAAiB,aACtB;AACN,UAAM,KAAK,wBAAwB;AAAA,MACjC,WAAW,KAAK,iBAAiB;AAAA,MACjC,YAAY,KAAK,iBAAiB;AAAA,MAClC;AAAA,MACA,MACE,KAAK,iBAAiB,QACtB;AAAA,MACF,UAAU;AAAA,QACR,SAAS;AAAA,QACT;AAAA,MAAA;AAAA,IACF,CACD;AAAA,EACH;AAAA,EAEA,8BACE,SACe;AACf,WAAO,KAAK,2BAA2B,OAAO,EAAE,KAAK,MAAY,MAAS;AAAA,EAC5E;AAAA,EAEA,2BACE,UAC4D;AAC5D,WAAO,QAAQ,QAAQ,IAAI;AAAA,EAC7B;AACF;AAEO,MAAM,iCAAiC,CAC5C,aAC6C,SAAS,WAAW;AAE5D,MAAM,iCAAiC,CAC5C,aAEA,SAAS,WAAW,aAAa,SAAS,YAAY;AAEjD,MAAM,iCAAiC,CAC5C,aAEA,SAAS,YAAY,QAAQ,SAAS,WAAW;"}
1
+ {"version":3,"file":"standards-sdk.es136.js","sources":["../../src/services/registry-broker/client/errors.ts"],"sourcesContent":["import type { JsonValue } from '../types';\nimport { ZodError } from 'zod';\n\nexport interface ErrorDetails {\n status: number;\n statusText: string;\n body: JsonValue;\n}\n\nexport class RegistryBrokerError extends Error {\n readonly status: number;\n readonly statusText: string;\n readonly body: JsonValue;\n\n constructor(message: string, details: ErrorDetails) {\n super(message);\n this.status = details.status;\n this.statusText = details.statusText;\n this.body = details.body;\n }\n}\n\nexport class RegistryBrokerParseError extends Error {\n readonly cause: ZodError | Error | string;\n readonly rawValue?: JsonValue;\n\n constructor(\n message: string,\n cause: ZodError | Error | string,\n rawValue?: JsonValue,\n ) {\n super(message);\n this.cause = cause;\n this.rawValue = rawValue;\n }\n}\n"],"names":[],"mappings":"AASO,MAAM,4BAA4B,MAAM;AAAA,EAK7C,YAAY,SAAiB,SAAuB;AAClD,UAAM,OAAO;AACb,SAAK,SAAS,QAAQ;AACtB,SAAK,aAAa,QAAQ;AAC1B,SAAK,OAAO,QAAQ;AAAA,EACtB;AACF;AAEO,MAAM,iCAAiC,MAAM;AAAA,EAIlD,YACE,SACA,OACA,UACA;AACA,UAAM,OAAO;AACb,SAAK,QAAQ;AACb,SAAK,WAAW;AAAA,EAClB;AACF;"}