@hashgraphonline/standards-sdk 0.1.189 → 0.1.191

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 (576) hide show
  1. package/dist/browser/hcs-25/adapters/agentverse.d.ts.map +1 -1
  2. package/dist/browser/hcs-25/adapters/ans-trust-discovery.d.ts +22 -0
  3. package/dist/browser/hcs-25/adapters/ans-trust-discovery.d.ts.map +1 -0
  4. package/dist/browser/hcs-25/adapters/availability.d.ts.map +1 -1
  5. package/dist/browser/hcs-25/adapters/connectivity.d.ts.map +1 -1
  6. package/dist/browser/hcs-25/adapters/ethos.d.ts.map +1 -1
  7. package/dist/browser/hcs-25/adapters/index.d.ts +1 -0
  8. package/dist/browser/hcs-25/adapters/index.d.ts.map +1 -1
  9. package/dist/browser/hcs-25/adapters/model-evals.d.ts.map +1 -1
  10. package/dist/browser/hcs-25/adapters/simple-evals.d.ts.map +1 -1
  11. package/dist/browser/hcs-25/adapters/x402.d.ts.map +1 -1
  12. package/dist/browser/hcs-25/collectors/acp.d.ts +42 -0
  13. package/dist/browser/hcs-25/collectors/acp.d.ts.map +1 -0
  14. package/dist/browser/hcs-25/collectors/agentverse.d.ts +37 -0
  15. package/dist/browser/hcs-25/collectors/agentverse.d.ts.map +1 -0
  16. package/dist/browser/hcs-25/collectors/ans-trust-discovery.d.ts +32 -0
  17. package/dist/browser/hcs-25/collectors/ans-trust-discovery.d.ts.map +1 -0
  18. package/dist/browser/hcs-25/collectors/availability.d.ts +29 -0
  19. package/dist/browser/hcs-25/collectors/availability.d.ts.map +1 -0
  20. package/dist/browser/hcs-25/collectors/catalog.d.ts +64 -0
  21. package/dist/browser/hcs-25/collectors/catalog.d.ts.map +1 -0
  22. package/dist/browser/hcs-25/collectors/connectivity.d.ts +49 -0
  23. package/dist/browser/hcs-25/collectors/connectivity.d.ts.map +1 -0
  24. package/dist/browser/hcs-25/collectors/endpoints.d.ts +9 -0
  25. package/dist/browser/hcs-25/collectors/endpoints.d.ts.map +1 -0
  26. package/dist/browser/hcs-25/collectors/erc8004.d.ts +104 -0
  27. package/dist/browser/hcs-25/collectors/erc8004.d.ts.map +1 -0
  28. package/dist/browser/hcs-25/collectors/ethos.d.ts +95 -0
  29. package/dist/browser/hcs-25/collectors/ethos.d.ts.map +1 -0
  30. package/dist/browser/hcs-25/collectors/freshness.d.ts +36 -0
  31. package/dist/browser/hcs-25/collectors/freshness.d.ts.map +1 -0
  32. package/dist/browser/hcs-25/collectors/http.d.ts +67 -0
  33. package/dist/browser/hcs-25/collectors/http.d.ts.map +1 -0
  34. package/dist/browser/hcs-25/collectors/index.d.ts +22 -0
  35. package/dist/browser/hcs-25/collectors/index.d.ts.map +1 -0
  36. package/dist/browser/hcs-25/collectors/merge.d.ts +11 -0
  37. package/dist/browser/hcs-25/collectors/merge.d.ts.map +1 -0
  38. package/dist/browser/hcs-25/collectors/model-evals.d.ts +315 -0
  39. package/dist/browser/hcs-25/collectors/model-evals.d.ts.map +1 -0
  40. package/dist/browser/hcs-25/collectors/oss-popularity.d.ts +51 -0
  41. package/dist/browser/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
  42. package/dist/browser/hcs-25/collectors/output-verification.d.ts +37 -0
  43. package/dist/browser/hcs-25/collectors/output-verification.d.ts.map +1 -0
  44. package/dist/browser/hcs-25/collectors/pipeline.d.ts +19 -0
  45. package/dist/browser/hcs-25/collectors/pipeline.d.ts.map +1 -0
  46. package/dist/browser/hcs-25/collectors/runner.d.ts +20 -0
  47. package/dist/browser/hcs-25/collectors/runner.d.ts.map +1 -0
  48. package/dist/browser/hcs-25/collectors/simple-evals.d.ts +91 -0
  49. package/dist/browser/hcs-25/collectors/simple-evals.d.ts.map +1 -0
  50. package/dist/browser/hcs-25/collectors/types.d.ts +113 -0
  51. package/dist/browser/hcs-25/collectors/types.d.ts.map +1 -0
  52. package/dist/browser/hcs-25/collectors/x402-onchain.d.ts +105 -0
  53. package/dist/browser/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
  54. package/dist/browser/hcs-25/collectors/x402.d.ts +48 -0
  55. package/dist/browser/hcs-25/collectors/x402.d.ts.map +1 -0
  56. package/dist/browser/hcs-25/index.d.ts +1 -0
  57. package/dist/browser/hcs-25/index.d.ts.map +1 -1
  58. package/dist/browser/hcs-25/signals/ans-trust-discovery.d.ts +50 -0
  59. package/dist/browser/hcs-25/signals/ans-trust-discovery.d.ts.map +1 -0
  60. package/dist/browser/hcs-25/signals/index.d.ts +1 -0
  61. package/dist/browser/hcs-25/signals/index.d.ts.map +1 -1
  62. package/dist/browser/hcs-25/signals/marketplace.d.ts +6 -6
  63. package/dist/browser/hcs-25/signals/marketplace.d.ts.map +1 -1
  64. package/dist/browser/hcs-25/signals/model-evals.d.ts +12 -12
  65. package/dist/browser/hcs-25/signals/model-evals.d.ts.map +1 -1
  66. package/dist/browser/hcs-25/signals/operational.d.ts +15 -12
  67. package/dist/browser/hcs-25/signals/operational.d.ts.map +1 -1
  68. package/dist/browser/hcs-25/signals/simple-evals.d.ts +1 -1
  69. package/dist/browser/hcs-25/signals/simple-evals.d.ts.map +1 -1
  70. package/dist/browser-root/hcs-25/adapters/agentverse.d.ts.map +1 -1
  71. package/dist/browser-root/hcs-25/adapters/ans-trust-discovery.d.ts +22 -0
  72. package/dist/browser-root/hcs-25/adapters/ans-trust-discovery.d.ts.map +1 -0
  73. package/dist/browser-root/hcs-25/adapters/availability.d.ts.map +1 -1
  74. package/dist/browser-root/hcs-25/adapters/connectivity.d.ts.map +1 -1
  75. package/dist/browser-root/hcs-25/adapters/ethos.d.ts.map +1 -1
  76. package/dist/browser-root/hcs-25/adapters/index.d.ts +1 -0
  77. package/dist/browser-root/hcs-25/adapters/index.d.ts.map +1 -1
  78. package/dist/browser-root/hcs-25/adapters/model-evals.d.ts.map +1 -1
  79. package/dist/browser-root/hcs-25/adapters/simple-evals.d.ts.map +1 -1
  80. package/dist/browser-root/hcs-25/adapters/x402.d.ts.map +1 -1
  81. package/dist/browser-root/hcs-25/collectors/acp.d.ts +42 -0
  82. package/dist/browser-root/hcs-25/collectors/acp.d.ts.map +1 -0
  83. package/dist/browser-root/hcs-25/collectors/agentverse.d.ts +37 -0
  84. package/dist/browser-root/hcs-25/collectors/agentverse.d.ts.map +1 -0
  85. package/dist/browser-root/hcs-25/collectors/ans-trust-discovery.d.ts +32 -0
  86. package/dist/browser-root/hcs-25/collectors/ans-trust-discovery.d.ts.map +1 -0
  87. package/dist/browser-root/hcs-25/collectors/availability.d.ts +29 -0
  88. package/dist/browser-root/hcs-25/collectors/availability.d.ts.map +1 -0
  89. package/dist/browser-root/hcs-25/collectors/catalog.d.ts +64 -0
  90. package/dist/browser-root/hcs-25/collectors/catalog.d.ts.map +1 -0
  91. package/dist/browser-root/hcs-25/collectors/connectivity.d.ts +49 -0
  92. package/dist/browser-root/hcs-25/collectors/connectivity.d.ts.map +1 -0
  93. package/dist/browser-root/hcs-25/collectors/endpoints.d.ts +9 -0
  94. package/dist/browser-root/hcs-25/collectors/endpoints.d.ts.map +1 -0
  95. package/dist/browser-root/hcs-25/collectors/erc8004.d.ts +104 -0
  96. package/dist/browser-root/hcs-25/collectors/erc8004.d.ts.map +1 -0
  97. package/dist/browser-root/hcs-25/collectors/ethos.d.ts +95 -0
  98. package/dist/browser-root/hcs-25/collectors/ethos.d.ts.map +1 -0
  99. package/dist/browser-root/hcs-25/collectors/freshness.d.ts +36 -0
  100. package/dist/browser-root/hcs-25/collectors/freshness.d.ts.map +1 -0
  101. package/dist/browser-root/hcs-25/collectors/http.d.ts +67 -0
  102. package/dist/browser-root/hcs-25/collectors/http.d.ts.map +1 -0
  103. package/dist/browser-root/hcs-25/collectors/index.d.ts +22 -0
  104. package/dist/browser-root/hcs-25/collectors/index.d.ts.map +1 -0
  105. package/dist/browser-root/hcs-25/collectors/merge.d.ts +11 -0
  106. package/dist/browser-root/hcs-25/collectors/merge.d.ts.map +1 -0
  107. package/dist/browser-root/hcs-25/collectors/model-evals.d.ts +315 -0
  108. package/dist/browser-root/hcs-25/collectors/model-evals.d.ts.map +1 -0
  109. package/dist/browser-root/hcs-25/collectors/oss-popularity.d.ts +51 -0
  110. package/dist/browser-root/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
  111. package/dist/browser-root/hcs-25/collectors/output-verification.d.ts +37 -0
  112. package/dist/browser-root/hcs-25/collectors/output-verification.d.ts.map +1 -0
  113. package/dist/browser-root/hcs-25/collectors/pipeline.d.ts +19 -0
  114. package/dist/browser-root/hcs-25/collectors/pipeline.d.ts.map +1 -0
  115. package/dist/browser-root/hcs-25/collectors/runner.d.ts +20 -0
  116. package/dist/browser-root/hcs-25/collectors/runner.d.ts.map +1 -0
  117. package/dist/browser-root/hcs-25/collectors/simple-evals.d.ts +91 -0
  118. package/dist/browser-root/hcs-25/collectors/simple-evals.d.ts.map +1 -0
  119. package/dist/browser-root/hcs-25/collectors/types.d.ts +113 -0
  120. package/dist/browser-root/hcs-25/collectors/types.d.ts.map +1 -0
  121. package/dist/browser-root/hcs-25/collectors/x402-onchain.d.ts +105 -0
  122. package/dist/browser-root/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
  123. package/dist/browser-root/hcs-25/collectors/x402.d.ts +48 -0
  124. package/dist/browser-root/hcs-25/collectors/x402.d.ts.map +1 -0
  125. package/dist/browser-root/hcs-25/index.d.ts +1 -0
  126. package/dist/browser-root/hcs-25/index.d.ts.map +1 -1
  127. package/dist/browser-root/hcs-25/signals/ans-trust-discovery.d.ts +50 -0
  128. package/dist/browser-root/hcs-25/signals/ans-trust-discovery.d.ts.map +1 -0
  129. package/dist/browser-root/hcs-25/signals/index.d.ts +1 -0
  130. package/dist/browser-root/hcs-25/signals/index.d.ts.map +1 -1
  131. package/dist/browser-root/hcs-25/signals/marketplace.d.ts +6 -6
  132. package/dist/browser-root/hcs-25/signals/marketplace.d.ts.map +1 -1
  133. package/dist/browser-root/hcs-25/signals/model-evals.d.ts +12 -12
  134. package/dist/browser-root/hcs-25/signals/model-evals.d.ts.map +1 -1
  135. package/dist/browser-root/hcs-25/signals/operational.d.ts +15 -12
  136. package/dist/browser-root/hcs-25/signals/operational.d.ts.map +1 -1
  137. package/dist/browser-root/hcs-25/signals/simple-evals.d.ts +1 -1
  138. package/dist/browser-root/hcs-25/signals/simple-evals.d.ts.map +1 -1
  139. package/dist/cjs/hcs-25/adapters/agentverse.d.ts.map +1 -1
  140. package/dist/cjs/hcs-25/adapters/ans-trust-discovery.d.ts +22 -0
  141. package/dist/cjs/hcs-25/adapters/ans-trust-discovery.d.ts.map +1 -0
  142. package/dist/cjs/hcs-25/adapters/availability.d.ts.map +1 -1
  143. package/dist/cjs/hcs-25/adapters/connectivity.d.ts.map +1 -1
  144. package/dist/cjs/hcs-25/adapters/ethos.d.ts.map +1 -1
  145. package/dist/cjs/hcs-25/adapters/index.d.ts +1 -0
  146. package/dist/cjs/hcs-25/adapters/index.d.ts.map +1 -1
  147. package/dist/cjs/hcs-25/adapters/model-evals.d.ts.map +1 -1
  148. package/dist/cjs/hcs-25/adapters/simple-evals.d.ts.map +1 -1
  149. package/dist/cjs/hcs-25/adapters/x402.d.ts.map +1 -1
  150. package/dist/cjs/hcs-25/collectors/acp.d.ts +42 -0
  151. package/dist/cjs/hcs-25/collectors/acp.d.ts.map +1 -0
  152. package/dist/cjs/hcs-25/collectors/agentverse.d.ts +37 -0
  153. package/dist/cjs/hcs-25/collectors/agentverse.d.ts.map +1 -0
  154. package/dist/cjs/hcs-25/collectors/ans-trust-discovery.d.ts +32 -0
  155. package/dist/cjs/hcs-25/collectors/ans-trust-discovery.d.ts.map +1 -0
  156. package/dist/cjs/hcs-25/collectors/availability.d.ts +29 -0
  157. package/dist/cjs/hcs-25/collectors/availability.d.ts.map +1 -0
  158. package/dist/cjs/hcs-25/collectors/catalog.d.ts +64 -0
  159. package/dist/cjs/hcs-25/collectors/catalog.d.ts.map +1 -0
  160. package/dist/cjs/hcs-25/collectors/connectivity.d.ts +49 -0
  161. package/dist/cjs/hcs-25/collectors/connectivity.d.ts.map +1 -0
  162. package/dist/cjs/hcs-25/collectors/endpoints.d.ts +9 -0
  163. package/dist/cjs/hcs-25/collectors/endpoints.d.ts.map +1 -0
  164. package/dist/cjs/hcs-25/collectors/erc8004.d.ts +104 -0
  165. package/dist/cjs/hcs-25/collectors/erc8004.d.ts.map +1 -0
  166. package/dist/cjs/hcs-25/collectors/ethos.d.ts +95 -0
  167. package/dist/cjs/hcs-25/collectors/ethos.d.ts.map +1 -0
  168. package/dist/cjs/hcs-25/collectors/freshness.d.ts +36 -0
  169. package/dist/cjs/hcs-25/collectors/freshness.d.ts.map +1 -0
  170. package/dist/cjs/hcs-25/collectors/http.d.ts +67 -0
  171. package/dist/cjs/hcs-25/collectors/http.d.ts.map +1 -0
  172. package/dist/cjs/hcs-25/collectors/index.d.ts +22 -0
  173. package/dist/cjs/hcs-25/collectors/index.d.ts.map +1 -0
  174. package/dist/cjs/hcs-25/collectors/merge.d.ts +11 -0
  175. package/dist/cjs/hcs-25/collectors/merge.d.ts.map +1 -0
  176. package/dist/cjs/hcs-25/collectors/model-evals.d.ts +315 -0
  177. package/dist/cjs/hcs-25/collectors/model-evals.d.ts.map +1 -0
  178. package/dist/cjs/hcs-25/collectors/oss-popularity.d.ts +51 -0
  179. package/dist/cjs/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
  180. package/dist/cjs/hcs-25/collectors/output-verification.d.ts +37 -0
  181. package/dist/cjs/hcs-25/collectors/output-verification.d.ts.map +1 -0
  182. package/dist/cjs/hcs-25/collectors/pipeline.d.ts +19 -0
  183. package/dist/cjs/hcs-25/collectors/pipeline.d.ts.map +1 -0
  184. package/dist/cjs/hcs-25/collectors/runner.d.ts +20 -0
  185. package/dist/cjs/hcs-25/collectors/runner.d.ts.map +1 -0
  186. package/dist/cjs/hcs-25/collectors/simple-evals.d.ts +91 -0
  187. package/dist/cjs/hcs-25/collectors/simple-evals.d.ts.map +1 -0
  188. package/dist/cjs/hcs-25/collectors/types.d.ts +113 -0
  189. package/dist/cjs/hcs-25/collectors/types.d.ts.map +1 -0
  190. package/dist/cjs/hcs-25/collectors/x402-onchain.d.ts +105 -0
  191. package/dist/cjs/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
  192. package/dist/cjs/hcs-25/collectors/x402.d.ts +48 -0
  193. package/dist/cjs/hcs-25/collectors/x402.d.ts.map +1 -0
  194. package/dist/cjs/hcs-25/index.d.ts +1 -0
  195. package/dist/cjs/hcs-25/index.d.ts.map +1 -1
  196. package/dist/cjs/hcs-25/signals/ans-trust-discovery.d.ts +50 -0
  197. package/dist/cjs/hcs-25/signals/ans-trust-discovery.d.ts.map +1 -0
  198. package/dist/cjs/hcs-25/signals/index.d.ts +1 -0
  199. package/dist/cjs/hcs-25/signals/index.d.ts.map +1 -1
  200. package/dist/cjs/hcs-25/signals/marketplace.d.ts +6 -6
  201. package/dist/cjs/hcs-25/signals/marketplace.d.ts.map +1 -1
  202. package/dist/cjs/hcs-25/signals/model-evals.d.ts +12 -12
  203. package/dist/cjs/hcs-25/signals/model-evals.d.ts.map +1 -1
  204. package/dist/cjs/hcs-25/signals/operational.d.ts +15 -12
  205. package/dist/cjs/hcs-25/signals/operational.d.ts.map +1 -1
  206. package/dist/cjs/hcs-25/signals/simple-evals.d.ts +1 -1
  207. package/dist/cjs/hcs-25/signals/simple-evals.d.ts.map +1 -1
  208. package/dist/cjs/standards-sdk.cjs +2 -2
  209. package/dist/cjs/standards-sdk.cjs.map +1 -1
  210. package/dist/es/hcs-25/adapters/agentverse.d.ts.map +1 -1
  211. package/dist/es/hcs-25/adapters/ans-trust-discovery.d.ts +22 -0
  212. package/dist/es/hcs-25/adapters/ans-trust-discovery.d.ts.map +1 -0
  213. package/dist/es/hcs-25/adapters/availability.d.ts.map +1 -1
  214. package/dist/es/hcs-25/adapters/connectivity.d.ts.map +1 -1
  215. package/dist/es/hcs-25/adapters/ethos.d.ts.map +1 -1
  216. package/dist/es/hcs-25/adapters/index.d.ts +1 -0
  217. package/dist/es/hcs-25/adapters/index.d.ts.map +1 -1
  218. package/dist/es/hcs-25/adapters/model-evals.d.ts.map +1 -1
  219. package/dist/es/hcs-25/adapters/simple-evals.d.ts.map +1 -1
  220. package/dist/es/hcs-25/adapters/x402.d.ts.map +1 -1
  221. package/dist/es/hcs-25/collectors/acp.d.ts +42 -0
  222. package/dist/es/hcs-25/collectors/acp.d.ts.map +1 -0
  223. package/dist/es/hcs-25/collectors/agentverse.d.ts +37 -0
  224. package/dist/es/hcs-25/collectors/agentverse.d.ts.map +1 -0
  225. package/dist/es/hcs-25/collectors/ans-trust-discovery.d.ts +32 -0
  226. package/dist/es/hcs-25/collectors/ans-trust-discovery.d.ts.map +1 -0
  227. package/dist/es/hcs-25/collectors/availability.d.ts +29 -0
  228. package/dist/es/hcs-25/collectors/availability.d.ts.map +1 -0
  229. package/dist/es/hcs-25/collectors/catalog.d.ts +64 -0
  230. package/dist/es/hcs-25/collectors/catalog.d.ts.map +1 -0
  231. package/dist/es/hcs-25/collectors/connectivity.d.ts +49 -0
  232. package/dist/es/hcs-25/collectors/connectivity.d.ts.map +1 -0
  233. package/dist/es/hcs-25/collectors/endpoints.d.ts +9 -0
  234. package/dist/es/hcs-25/collectors/endpoints.d.ts.map +1 -0
  235. package/dist/es/hcs-25/collectors/erc8004.d.ts +104 -0
  236. package/dist/es/hcs-25/collectors/erc8004.d.ts.map +1 -0
  237. package/dist/es/hcs-25/collectors/ethos.d.ts +95 -0
  238. package/dist/es/hcs-25/collectors/ethos.d.ts.map +1 -0
  239. package/dist/es/hcs-25/collectors/freshness.d.ts +36 -0
  240. package/dist/es/hcs-25/collectors/freshness.d.ts.map +1 -0
  241. package/dist/es/hcs-25/collectors/http.d.ts +67 -0
  242. package/dist/es/hcs-25/collectors/http.d.ts.map +1 -0
  243. package/dist/es/hcs-25/collectors/index.d.ts +22 -0
  244. package/dist/es/hcs-25/collectors/index.d.ts.map +1 -0
  245. package/dist/es/hcs-25/collectors/merge.d.ts +11 -0
  246. package/dist/es/hcs-25/collectors/merge.d.ts.map +1 -0
  247. package/dist/es/hcs-25/collectors/model-evals.d.ts +315 -0
  248. package/dist/es/hcs-25/collectors/model-evals.d.ts.map +1 -0
  249. package/dist/es/hcs-25/collectors/oss-popularity.d.ts +51 -0
  250. package/dist/es/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
  251. package/dist/es/hcs-25/collectors/output-verification.d.ts +37 -0
  252. package/dist/es/hcs-25/collectors/output-verification.d.ts.map +1 -0
  253. package/dist/es/hcs-25/collectors/pipeline.d.ts +19 -0
  254. package/dist/es/hcs-25/collectors/pipeline.d.ts.map +1 -0
  255. package/dist/es/hcs-25/collectors/runner.d.ts +20 -0
  256. package/dist/es/hcs-25/collectors/runner.d.ts.map +1 -0
  257. package/dist/es/hcs-25/collectors/simple-evals.d.ts +91 -0
  258. package/dist/es/hcs-25/collectors/simple-evals.d.ts.map +1 -0
  259. package/dist/es/hcs-25/collectors/types.d.ts +113 -0
  260. package/dist/es/hcs-25/collectors/types.d.ts.map +1 -0
  261. package/dist/es/hcs-25/collectors/x402-onchain.d.ts +105 -0
  262. package/dist/es/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
  263. package/dist/es/hcs-25/collectors/x402.d.ts +48 -0
  264. package/dist/es/hcs-25/collectors/x402.d.ts.map +1 -0
  265. package/dist/es/hcs-25/index.d.ts +1 -0
  266. package/dist/es/hcs-25/index.d.ts.map +1 -1
  267. package/dist/es/hcs-25/signals/ans-trust-discovery.d.ts +50 -0
  268. package/dist/es/hcs-25/signals/ans-trust-discovery.d.ts.map +1 -0
  269. package/dist/es/hcs-25/signals/index.d.ts +1 -0
  270. package/dist/es/hcs-25/signals/index.d.ts.map +1 -1
  271. package/dist/es/hcs-25/signals/marketplace.d.ts +6 -6
  272. package/dist/es/hcs-25/signals/marketplace.d.ts.map +1 -1
  273. package/dist/es/hcs-25/signals/model-evals.d.ts +12 -12
  274. package/dist/es/hcs-25/signals/model-evals.d.ts.map +1 -1
  275. package/dist/es/hcs-25/signals/operational.d.ts +15 -12
  276. package/dist/es/hcs-25/signals/operational.d.ts.map +1 -1
  277. package/dist/es/hcs-25/signals/simple-evals.d.ts +1 -1
  278. package/dist/es/hcs-25/signals/simple-evals.d.ts.map +1 -1
  279. package/dist/es/standards-sdk.es.js +144 -58
  280. package/dist/es/standards-sdk.es.js.map +1 -1
  281. package/dist/es/standards-sdk.es101.js +2 -2
  282. package/dist/es/standards-sdk.es103.js +2 -2
  283. package/dist/es/standards-sdk.es104.js +1 -1
  284. package/dist/es/standards-sdk.es106.js +1 -1
  285. package/dist/es/standards-sdk.es108.js +2 -2
  286. package/dist/es/standards-sdk.es11.js +1 -1
  287. package/dist/es/standards-sdk.es110.js +1 -1
  288. package/dist/es/standards-sdk.es111.js +2 -2
  289. package/dist/es/standards-sdk.es115.js +3 -3
  290. package/dist/es/standards-sdk.es116.js +4 -4
  291. package/dist/es/standards-sdk.es12.js +1 -1
  292. package/dist/es/standards-sdk.es120.js +22 -4
  293. package/dist/es/standards-sdk.es120.js.map +1 -1
  294. package/dist/es/standards-sdk.es121.js +15 -12
  295. package/dist/es/standards-sdk.es121.js.map +1 -1
  296. package/dist/es/standards-sdk.es122.js +176 -240
  297. package/dist/es/standards-sdk.es122.js.map +1 -1
  298. package/dist/es/standards-sdk.es123.js +42 -468
  299. package/dist/es/standards-sdk.es123.js.map +1 -1
  300. package/dist/es/standards-sdk.es124.js +29 -103
  301. package/dist/es/standards-sdk.es124.js.map +1 -1
  302. package/dist/es/standards-sdk.es125.js +185 -145
  303. package/dist/es/standards-sdk.es125.js.map +1 -1
  304. package/dist/es/standards-sdk.es126.js +13 -33
  305. package/dist/es/standards-sdk.es126.js.map +1 -1
  306. package/dist/es/standards-sdk.es127.js +45 -10
  307. package/dist/es/standards-sdk.es127.js.map +1 -1
  308. package/dist/es/standards-sdk.es128.js +120 -168
  309. package/dist/es/standards-sdk.es128.js.map +1 -1
  310. package/dist/es/standards-sdk.es129.js +158 -26
  311. package/dist/es/standards-sdk.es129.js.map +1 -1
  312. package/dist/es/standards-sdk.es13.js +1 -1
  313. package/dist/es/standards-sdk.es130.js +166 -19
  314. package/dist/es/standards-sdk.es130.js.map +1 -1
  315. package/dist/es/standards-sdk.es131.js +360 -140
  316. package/dist/es/standards-sdk.es131.js.map +1 -1
  317. package/dist/es/standards-sdk.es132.js +371 -180
  318. package/dist/es/standards-sdk.es132.js.map +1 -1
  319. package/dist/es/standards-sdk.es133.js +210 -766
  320. package/dist/es/standards-sdk.es133.js.map +1 -1
  321. package/dist/es/standards-sdk.es134.js +229 -11
  322. package/dist/es/standards-sdk.es134.js.map +1 -1
  323. package/dist/es/standards-sdk.es135.js +368 -556
  324. package/dist/es/standards-sdk.es135.js.map +1 -1
  325. package/dist/es/standards-sdk.es136.js +108 -612
  326. package/dist/es/standards-sdk.es136.js.map +1 -1
  327. package/dist/es/standards-sdk.es137.js +251 -12
  328. package/dist/es/standards-sdk.es137.js.map +1 -1
  329. package/dist/es/standards-sdk.es138.js +1330 -2
  330. package/dist/es/standards-sdk.es138.js.map +1 -1
  331. package/dist/es/standards-sdk.es139.js +126 -79
  332. package/dist/es/standards-sdk.es139.js.map +1 -1
  333. package/dist/es/standards-sdk.es14.js +1 -1
  334. package/dist/es/standards-sdk.es140.js +264 -32
  335. package/dist/es/standards-sdk.es140.js.map +1 -1
  336. package/dist/es/standards-sdk.es141.js +111 -2
  337. package/dist/es/standards-sdk.es141.js.map +1 -1
  338. package/dist/es/standards-sdk.es142.js +244 -227
  339. package/dist/es/standards-sdk.es142.js.map +1 -1
  340. package/dist/es/standards-sdk.es143.js +436 -1098
  341. package/dist/es/standards-sdk.es143.js.map +1 -1
  342. package/dist/es/standards-sdk.es144.js +92 -293
  343. package/dist/es/standards-sdk.es144.js.map +1 -1
  344. package/dist/es/standards-sdk.es145.js +157 -419
  345. package/dist/es/standards-sdk.es145.js.map +1 -1
  346. package/dist/es/standards-sdk.es146.js +30 -351
  347. package/dist/es/standards-sdk.es146.js.map +1 -1
  348. package/dist/es/standards-sdk.es147.js +9 -1119
  349. package/dist/es/standards-sdk.es147.js.map +1 -1
  350. package/dist/es/standards-sdk.es148.js +160 -186
  351. package/dist/es/standards-sdk.es148.js.map +1 -1
  352. package/dist/es/standards-sdk.es149.js +27 -1565
  353. package/dist/es/standards-sdk.es149.js.map +1 -1
  354. package/dist/es/standards-sdk.es15.js +1 -1
  355. package/dist/es/standards-sdk.es150.js +16 -1160
  356. package/dist/es/standards-sdk.es150.js.map +1 -1
  357. package/dist/es/standards-sdk.es151.js +157 -14
  358. package/dist/es/standards-sdk.es151.js.map +1 -1
  359. package/dist/es/standards-sdk.es152.js +191 -440
  360. package/dist/es/standards-sdk.es152.js.map +1 -1
  361. package/dist/es/standards-sdk.es153.js +764 -233
  362. package/dist/es/standards-sdk.es153.js.map +1 -1
  363. package/dist/es/standards-sdk.es154.js +13 -4
  364. package/dist/es/standards-sdk.es154.js.map +1 -1
  365. package/dist/es/standards-sdk.es155.js +567 -81
  366. package/dist/es/standards-sdk.es155.js.map +1 -1
  367. package/dist/es/standards-sdk.es156.js +617 -78
  368. package/dist/es/standards-sdk.es156.js.map +1 -1
  369. package/dist/es/standards-sdk.es157.js +13 -60
  370. package/dist/es/standards-sdk.es157.js.map +1 -1
  371. package/dist/es/standards-sdk.es158.js +2 -2547
  372. package/dist/es/standards-sdk.es158.js.map +1 -1
  373. package/dist/es/standards-sdk.es159.js +73 -145
  374. package/dist/es/standards-sdk.es159.js.map +1 -1
  375. package/dist/es/standards-sdk.es16.js +6 -6
  376. package/dist/es/standards-sdk.es160.js +40 -7
  377. package/dist/es/standards-sdk.es160.js.map +1 -1
  378. package/dist/es/standards-sdk.es161.js +2 -86
  379. package/dist/es/standards-sdk.es161.js.map +1 -1
  380. package/dist/es/standards-sdk.es162.js +225 -55
  381. package/dist/es/standards-sdk.es162.js.map +1 -1
  382. package/dist/es/standards-sdk.es163.js +1137 -191
  383. package/dist/es/standards-sdk.es163.js.map +1 -1
  384. package/dist/es/standards-sdk.es164.js +303 -23
  385. package/dist/es/standards-sdk.es164.js.map +1 -1
  386. package/dist/es/standards-sdk.es165.js +419 -55
  387. package/dist/es/standards-sdk.es165.js.map +1 -1
  388. package/dist/es/standards-sdk.es166.js +351 -91
  389. package/dist/es/standards-sdk.es166.js.map +1 -1
  390. package/dist/es/standards-sdk.es167.js +1113 -40
  391. package/dist/es/standards-sdk.es167.js.map +1 -1
  392. package/dist/es/standards-sdk.es168.js +200 -196
  393. package/dist/es/standards-sdk.es168.js.map +1 -1
  394. package/dist/es/standards-sdk.es169.js +1561 -50
  395. package/dist/es/standards-sdk.es169.js.map +1 -1
  396. package/dist/es/standards-sdk.es170.js +1161 -44
  397. package/dist/es/standards-sdk.es170.js.map +1 -1
  398. package/dist/es/standards-sdk.es171.js +14 -53
  399. package/dist/es/standards-sdk.es171.js.map +1 -1
  400. package/dist/es/standards-sdk.es172.js +443 -41
  401. package/dist/es/standards-sdk.es172.js.map +1 -1
  402. package/dist/es/standards-sdk.es173.js +242 -105
  403. package/dist/es/standards-sdk.es173.js.map +1 -1
  404. package/dist/es/standards-sdk.es174.js +4 -54
  405. package/dist/es/standards-sdk.es174.js.map +1 -1
  406. package/dist/es/standards-sdk.es175.js +79 -42
  407. package/dist/es/standards-sdk.es175.js.map +1 -1
  408. package/dist/es/standards-sdk.es176.js +87 -72
  409. package/dist/es/standards-sdk.es176.js.map +1 -1
  410. package/dist/es/standards-sdk.es177.js +60 -68
  411. package/dist/es/standards-sdk.es177.js.map +1 -1
  412. package/dist/es/standards-sdk.es178.js +2545 -42
  413. package/dist/es/standards-sdk.es178.js.map +1 -1
  414. package/dist/es/standards-sdk.es179.js +157 -34
  415. package/dist/es/standards-sdk.es179.js.map +1 -1
  416. package/dist/es/standards-sdk.es18.js +13 -13
  417. package/dist/es/standards-sdk.es180.js +7 -30
  418. package/dist/es/standards-sdk.es180.js.map +1 -1
  419. package/dist/es/standards-sdk.es181.js +86 -34
  420. package/dist/es/standards-sdk.es181.js.map +1 -1
  421. package/dist/es/standards-sdk.es182.js +65 -48
  422. package/dist/es/standards-sdk.es182.js.map +1 -1
  423. package/dist/es/standards-sdk.es183.js +27 -138
  424. package/dist/es/standards-sdk.es183.js.map +1 -1
  425. package/dist/es/standards-sdk.es184.js +191 -37
  426. package/dist/es/standards-sdk.es184.js.map +1 -1
  427. package/dist/es/standards-sdk.es185.js +17 -12473
  428. package/dist/es/standards-sdk.es185.js.map +1 -1
  429. package/dist/es/standards-sdk.es186.js +56 -53
  430. package/dist/es/standards-sdk.es186.js.map +1 -1
  431. package/dist/es/standards-sdk.es187.js +104 -100
  432. package/dist/es/standards-sdk.es187.js.map +1 -1
  433. package/dist/es/standards-sdk.es188.js +43 -75
  434. package/dist/es/standards-sdk.es188.js.map +1 -1
  435. package/dist/es/standards-sdk.es189.js +55 -197
  436. package/dist/es/standards-sdk.es189.js.map +1 -1
  437. package/dist/es/standards-sdk.es19.js +10 -10
  438. package/dist/es/standards-sdk.es190.js +229 -669
  439. package/dist/es/standards-sdk.es190.js.map +1 -1
  440. package/dist/es/standards-sdk.es191.js +67 -166
  441. package/dist/es/standards-sdk.es191.js.map +1 -1
  442. package/dist/es/standards-sdk.es192.js +45 -317
  443. package/dist/es/standards-sdk.es192.js.map +1 -1
  444. package/dist/es/standards-sdk.es193.js +59 -342
  445. package/dist/es/standards-sdk.es193.js.map +1 -1
  446. package/dist/es/standards-sdk.es194.js +45 -448
  447. package/dist/es/standards-sdk.es194.js.map +1 -1
  448. package/dist/es/standards-sdk.es195.js +117 -325
  449. package/dist/es/standards-sdk.es195.js.map +1 -1
  450. package/dist/es/standards-sdk.es196.js +51 -69
  451. package/dist/es/standards-sdk.es196.js.map +1 -1
  452. package/dist/es/standards-sdk.es197.js +54 -67
  453. package/dist/es/standards-sdk.es197.js.map +1 -1
  454. package/dist/es/standards-sdk.es198.js +72 -17
  455. package/dist/es/standards-sdk.es198.js.map +1 -1
  456. package/dist/es/standards-sdk.es199.js +75 -139
  457. package/dist/es/standards-sdk.es199.js.map +1 -1
  458. package/dist/es/standards-sdk.es2.js +2 -2
  459. package/dist/es/standards-sdk.es20.js +1 -1
  460. package/dist/es/standards-sdk.es200.js +44 -517
  461. package/dist/es/standards-sdk.es200.js.map +1 -1
  462. package/dist/es/standards-sdk.es201.js +33 -256
  463. package/dist/es/standards-sdk.es201.js.map +1 -1
  464. package/dist/es/standards-sdk.es202.js +30 -196
  465. package/dist/es/standards-sdk.es202.js.map +1 -1
  466. package/dist/es/standards-sdk.es203.js +34 -119
  467. package/dist/es/standards-sdk.es203.js.map +1 -1
  468. package/dist/es/standards-sdk.es204.js +48 -152
  469. package/dist/es/standards-sdk.es204.js.map +1 -1
  470. package/dist/es/standards-sdk.es205.js +126 -172
  471. package/dist/es/standards-sdk.es205.js.map +1 -1
  472. package/dist/es/standards-sdk.es206.js +34 -676
  473. package/dist/es/standards-sdk.es206.js.map +1 -1
  474. package/dist/es/standards-sdk.es207.js +12453 -156
  475. package/dist/es/standards-sdk.es207.js.map +1 -1
  476. package/dist/es/standards-sdk.es208.js +14 -232
  477. package/dist/es/standards-sdk.es208.js.map +1 -1
  478. package/dist/es/standards-sdk.es209.js +49 -232
  479. package/dist/es/standards-sdk.es209.js.map +1 -1
  480. package/dist/es/standards-sdk.es21.js +1 -1
  481. package/dist/es/standards-sdk.es210.js +114 -0
  482. package/dist/es/standards-sdk.es210.js.map +1 -0
  483. package/dist/es/standards-sdk.es211.js +84 -0
  484. package/dist/es/standards-sdk.es211.js.map +1 -0
  485. package/dist/es/standards-sdk.es212.js +203 -0
  486. package/dist/es/standards-sdk.es212.js.map +1 -0
  487. package/dist/es/standards-sdk.es213.js +76 -0
  488. package/dist/es/standards-sdk.es213.js.map +1 -0
  489. package/dist/es/standards-sdk.es214.js +675 -0
  490. package/dist/es/standards-sdk.es214.js.map +1 -0
  491. package/dist/es/standards-sdk.es215.js +175 -0
  492. package/dist/es/standards-sdk.es215.js.map +1 -0
  493. package/dist/es/standards-sdk.es216.js +325 -0
  494. package/dist/es/standards-sdk.es216.js.map +1 -0
  495. package/dist/es/standards-sdk.es217.js +349 -0
  496. package/dist/es/standards-sdk.es217.js.map +1 -0
  497. package/dist/es/standards-sdk.es218.js +456 -0
  498. package/dist/es/standards-sdk.es218.js.map +1 -0
  499. package/dist/es/standards-sdk.es219.js +334 -0
  500. package/dist/es/standards-sdk.es219.js.map +1 -0
  501. package/dist/es/standards-sdk.es22.js +1 -1
  502. package/dist/es/standards-sdk.es220.js +79 -0
  503. package/dist/es/standards-sdk.es220.js.map +1 -0
  504. package/dist/es/standards-sdk.es221.js +142 -0
  505. package/dist/es/standards-sdk.es221.js.map +1 -0
  506. package/dist/es/standards-sdk.es222.js +520 -0
  507. package/dist/es/standards-sdk.es222.js.map +1 -0
  508. package/dist/es/standards-sdk.es223.js +262 -0
  509. package/dist/es/standards-sdk.es223.js.map +1 -0
  510. package/dist/es/standards-sdk.es224.js +199 -0
  511. package/dist/es/standards-sdk.es224.js.map +1 -0
  512. package/dist/es/standards-sdk.es225.js +122 -0
  513. package/dist/es/standards-sdk.es225.js.map +1 -0
  514. package/dist/es/standards-sdk.es226.js +155 -0
  515. package/dist/es/standards-sdk.es226.js.map +1 -0
  516. package/dist/es/standards-sdk.es227.js +187 -0
  517. package/dist/es/standards-sdk.es227.js.map +1 -0
  518. package/dist/es/standards-sdk.es228.js +687 -0
  519. package/dist/es/standards-sdk.es228.js.map +1 -0
  520. package/dist/es/standards-sdk.es229.js +188 -0
  521. package/dist/es/standards-sdk.es229.js.map +1 -0
  522. package/dist/es/standards-sdk.es23.js +1 -1
  523. package/dist/es/standards-sdk.es230.js +238 -0
  524. package/dist/es/standards-sdk.es230.js.map +1 -0
  525. package/dist/es/standards-sdk.es231.js +242 -0
  526. package/dist/es/standards-sdk.es231.js.map +1 -0
  527. package/dist/es/standards-sdk.es24.js +1 -1
  528. package/dist/es/standards-sdk.es25.js +1 -1
  529. package/dist/es/standards-sdk.es26.js +1 -1
  530. package/dist/es/standards-sdk.es27.js +13 -13
  531. package/dist/es/standards-sdk.es30.js +2 -2
  532. package/dist/es/standards-sdk.es31.js +4 -4
  533. package/dist/es/standards-sdk.es32.js +1 -1
  534. package/dist/es/standards-sdk.es35.js +7 -7
  535. package/dist/es/standards-sdk.es36.js +4 -4
  536. package/dist/es/standards-sdk.es37.js +2 -2
  537. package/dist/es/standards-sdk.es38.js +2 -2
  538. package/dist/es/standards-sdk.es39.js +1 -1
  539. package/dist/es/standards-sdk.es4.js +2 -2
  540. package/dist/es/standards-sdk.es40.js +1 -1
  541. package/dist/es/standards-sdk.es41.js +2 -2
  542. package/dist/es/standards-sdk.es46.js +1 -1
  543. package/dist/es/standards-sdk.es5.js +2 -2
  544. package/dist/es/standards-sdk.es51.js +1 -1
  545. package/dist/es/standards-sdk.es53.js +1 -1
  546. package/dist/es/standards-sdk.es56.js +2 -2
  547. package/dist/es/standards-sdk.es59.js +1 -1
  548. package/dist/es/standards-sdk.es6.js +2 -2
  549. package/dist/es/standards-sdk.es60.js +1 -1
  550. package/dist/es/standards-sdk.es62.js +1 -1
  551. package/dist/es/standards-sdk.es63.js +2 -2
  552. package/dist/es/standards-sdk.es64.js +1 -1
  553. package/dist/es/standards-sdk.es65.js +1 -1
  554. package/dist/es/standards-sdk.es66.js +1 -1
  555. package/dist/es/standards-sdk.es67.js +8 -8
  556. package/dist/es/standards-sdk.es69.js +1 -1
  557. package/dist/es/standards-sdk.es7.js +1 -1
  558. package/dist/es/standards-sdk.es71.js +2 -2
  559. package/dist/es/standards-sdk.es72.js +3 -3
  560. package/dist/es/standards-sdk.es75.js +5 -5
  561. package/dist/es/standards-sdk.es76.js +3 -3
  562. package/dist/es/standards-sdk.es77.js +2 -2
  563. package/dist/es/standards-sdk.es78.js +1 -1
  564. package/dist/es/standards-sdk.es81.js +2 -2
  565. package/dist/es/standards-sdk.es83.js +2 -2
  566. package/dist/es/standards-sdk.es84.js +5 -5
  567. package/dist/es/standards-sdk.es85.js +1 -1
  568. package/dist/es/standards-sdk.es88.js +1 -1
  569. package/dist/es/standards-sdk.es89.js +2 -2
  570. package/dist/es/standards-sdk.es9.js +2 -2
  571. package/dist/es/standards-sdk.es90.js +4 -4
  572. package/dist/es/standards-sdk.es94.js +3 -3
  573. package/dist/es/standards-sdk.es96.js +2 -2
  574. package/dist/es/standards-sdk.es98.js +1 -1
  575. package/dist/es/standards-sdk.es99.js +3 -3
  576. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es123.js","sources":["../../src/hcs-26/resolver.ts"],"sourcesContent":["import { Logger, type ILogger } from '../utils/logger';\nimport { HederaMirrorNode } from '../services/mirror-node';\nimport { HRLResolver } from '../utils/hrl-resolver';\nimport type { MirrorNodeConfig } from '../services/mirror-node';\nimport { hash } from '../utils/crypto-abstraction';\nimport {\n hcs26DiscoveryRegisterSchema,\n hcs26DiscoveryRegisterLegacySchema,\n hcs26DiscoveryMetadataSchema,\n hcs26DiscoveryMetadataPatchSchema,\n hcs26DiscoveryUpdateSchema,\n hcs26DiscoveryUpdateLegacySchema,\n hcs26DiscoveryDeleteSchema,\n hcs26SkillManifestSchema,\n hcs26VersionRegisterSchema,\n hcs26VersionRegisterLegacySchema,\n hcs26VersionUpdateSchema,\n hcs26VersionDeleteSchema,\n type HCS26Network,\n type Hcs26DiscoveryRegister,\n type Hcs26DiscoveryRegisterLegacy,\n type Hcs26SkillManifest,\n type Hcs26VersionRegister,\n type Hcs26VersionRegisterLegacy,\n type Hcs26VersionUpdate,\n} from './types';\n\ntype Hcs26ResolverDeps = {\n network: HCS26Network;\n logger?: ILogger;\n mirrorNode?: MirrorNodeConfig;\n};\n\ntype ParsedSemver = {\n major: number;\n minor: number;\n patch: number;\n prerelease: (string | number)[];\n};\n\nfunction parseSemver(versionRaw: string): ParsedSemver | null {\n const trimmed = versionRaw.trim().replace(/^v/i, '');\n const match = trimmed.match(\n /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-([0-9A-Za-z.-]+))?(?:\\+[0-9A-Za-z.-]+)?$/,\n );\n if (!match) {\n return null;\n }\n\n const major = Number(match[1]);\n const minor = Number(match[2]);\n const patch = Number(match[3]);\n if (![major, minor, patch].every(Number.isFinite)) {\n return null;\n }\n\n const prereleaseRaw = match[4];\n const prerelease = prereleaseRaw\n ? prereleaseRaw.split('.').map(part => {\n if (/^(0|[1-9]\\d*)$/.test(part)) {\n return Number(part);\n }\n return part;\n })\n : [];\n\n return { major, minor, patch, prerelease };\n}\n\nfunction compareSemver(a: ParsedSemver, b: ParsedSemver): number {\n if (a.major !== b.major) return a.major - b.major;\n if (a.minor !== b.minor) return a.minor - b.minor;\n if (a.patch !== b.patch) return a.patch - b.patch;\n\n const aHasPre = a.prerelease.length > 0;\n const bHasPre = b.prerelease.length > 0;\n if (!aHasPre && bHasPre) return 1;\n if (aHasPre && !bHasPre) return -1;\n if (!aHasPre && !bHasPre) return 0;\n\n const len = Math.max(a.prerelease.length, b.prerelease.length);\n for (let index = 0; index < len; index += 1) {\n const aId = a.prerelease[index];\n const bId = b.prerelease[index];\n if (aId === undefined && bId !== undefined) return -1;\n if (aId !== undefined && bId === undefined) return 1;\n if (aId === bId) continue;\n\n if (typeof aId === 'number' && typeof bId === 'number') {\n return aId - bId;\n }\n if (typeof aId === 'number' && typeof bId === 'string') {\n return -1;\n }\n if (typeof aId === 'string' && typeof bId === 'number') {\n return 1;\n }\n if (typeof aId === 'string' && typeof bId === 'string') {\n return aId < bId ? -1 : 1;\n }\n }\n\n return 0;\n}\n\nfunction isActiveStatus(\n status: (Hcs26VersionRegister | Hcs26VersionRegisterLegacy)['status'],\n): boolean {\n return !status || status === 'active';\n}\n\nfunction normalizeUidString(value: unknown): string | null {\n if (typeof value !== 'string') {\n return null;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction resolveSequenceNumber(\n primary: unknown,\n fallback: unknown,\n): number | null {\n if (typeof primary === 'number') {\n return primary;\n }\n if (typeof fallback === 'number') {\n return fallback;\n }\n return null;\n}\n\nfunction parseSequenceFromUid(uid: string): number | null {\n if (!/^\\d+$/.test(uid)) {\n return null;\n }\n const parsed = Number(uid);\n return Number.isSafeInteger(parsed) ? parsed : null;\n}\n\nfunction ensureNonEmptyString(value: unknown, field: string): string {\n if (typeof value !== 'string') {\n throw new Error(`Expected ${field} to be a string`);\n }\n const trimmed = value.trim();\n if (!trimmed) {\n throw new Error(`Expected ${field} to be a non-empty string`);\n }\n return trimmed;\n}\n\ntype NormalizedDiscoveryRegister = {\n p: 'hcs-26';\n op: 'register';\n t_id: string;\n account_id: string;\n metadata: Record<string, unknown>;\n m?: string;\n sequence_number?: number;\n};\n\ntype NormalizedDiscoveryRegisterRaw = Omit<\n NormalizedDiscoveryRegister,\n 'metadata'\n> & {\n metadata: Record<string, unknown> | string;\n};\n\nfunction mergeDiscoveryMetadata(\n base: Record<string, unknown>,\n update?: Record<string, unknown>,\n): Record<string, unknown> {\n if (!update) {\n return base;\n }\n return { ...base, ...update };\n}\n\nfunction normalizeDiscoveryRegister(\n input: Hcs26DiscoveryRegister | Hcs26DiscoveryRegisterLegacy,\n messageSequenceNumber?: number,\n): NormalizedDiscoveryRegisterRaw {\n const seq =\n typeof input.sequence_number === 'number'\n ? input.sequence_number\n : typeof messageSequenceNumber === 'number'\n ? messageSequenceNumber\n : undefined;\n\n if ('t_id' in input) {\n return {\n p: 'hcs-26',\n op: 'register',\n t_id: ensureNonEmptyString(input.t_id, 't_id'),\n account_id: ensureNonEmptyString(input.account_id, 'account_id'),\n metadata: input.metadata,\n ...(input.m ? { m: input.m } : {}),\n ...(typeof seq === 'number' ? { sequence_number: seq } : {}),\n };\n }\n\n return {\n p: 'hcs-26',\n op: 'register',\n t_id: ensureNonEmptyString(input.version_registry, 'version_registry'),\n account_id: ensureNonEmptyString(input.publisher, 'publisher'),\n metadata: input.metadata,\n ...(input.m ? { m: input.m } : {}),\n ...(typeof seq === 'number' ? { sequence_number: seq } : {}),\n };\n}\n\nexport class Hcs26SkillRegistryResolver {\n private readonly logger: ILogger;\n private readonly mirrorNode: HederaMirrorNode;\n private readonly hrlResolver: HRLResolver;\n private readonly network: HCS26Network;\n\n constructor(deps: Hcs26ResolverDeps) {\n this.network = deps.network;\n this.logger =\n deps.logger ??\n Logger.getInstance({\n module: 'HCS26Resolver',\n level: 'info',\n });\n this.mirrorNode = new HederaMirrorNode(\n deps.network,\n this.logger,\n deps.mirrorNode,\n );\n this.hrlResolver = new HRLResolver('warn');\n }\n\n private async resolveDiscoveryMetadataHrl(\n metadataHrl: string,\n mode: 'full' | 'patch',\n ): Promise<Record<string, unknown>> {\n const resolved = await this.hrlResolver.resolve(metadataHrl, {\n network: this.network,\n returnRaw: true,\n });\n\n const bytes =\n resolved.content instanceof ArrayBuffer\n ? Buffer.from(resolved.content)\n : Buffer.from(String(resolved.content), 'utf8');\n\n let raw: unknown;\n try {\n raw = JSON.parse(bytes.toString('utf8'));\n } catch {\n throw new Error('Discovery metadata HRL content is not valid JSON');\n }\n\n const schema =\n mode === 'full'\n ? hcs26DiscoveryMetadataSchema\n : hcs26DiscoveryMetadataPatchSchema;\n const parsed = schema.safeParse(raw);\n if (!parsed.success) {\n throw new Error(`Invalid discovery metadata: ${parsed.error.message}`);\n }\n return this.normalizeDiscoveryMetadataObject(\n parsed.data as unknown as Record<string, unknown>,\n );\n }\n\n private normalizeDiscoveryMetadataObject(\n metadata: Record<string, unknown>,\n ): Record<string, unknown> {\n if (\n typeof metadata.icon !== 'string' ||\n metadata.icon.trim().length === 0\n ) {\n const iconLegacy = metadata.icon_hcs1;\n if (typeof iconLegacy === 'string' && iconLegacy.trim().length > 0) {\n return { ...metadata, icon: iconLegacy };\n }\n }\n return metadata;\n }\n\n private async resolveDiscoveryMetadataUri(\n metadataUri: string,\n mode: 'full' | 'patch',\n ): Promise<Record<string, unknown>> {\n const trimmed = metadataUri.trim();\n if (trimmed.startsWith('hcs://1/')) {\n return this.resolveDiscoveryMetadataHrl(trimmed, mode);\n }\n throw new Error(`Unsupported discovery metadata URI: ${trimmed}`);\n }\n\n private resolveDiscoveryMetadataObject(params: {\n metadata: unknown;\n mode: 'full' | 'patch';\n }): Promise<Record<string, unknown>> {\n if (typeof params.metadata === 'string') {\n return this.resolveDiscoveryMetadataUri(params.metadata, params.mode);\n }\n\n const schema =\n params.mode === 'full'\n ? hcs26DiscoveryMetadataSchema\n : hcs26DiscoveryMetadataPatchSchema;\n const parsed = schema.safeParse(params.metadata);\n if (!parsed.success) {\n throw new Error(`Invalid discovery metadata: ${parsed.error.message}`);\n }\n return Promise.resolve(\n this.normalizeDiscoveryMetadataObject(\n parsed.data as unknown as Record<string, unknown>,\n ),\n );\n }\n\n async getDiscoveryRegister(params: {\n directoryTopicId: string;\n skillUid: number;\n }): Promise<NormalizedDiscoveryRegister | null> {\n const messages = await this.mirrorNode.getTopicMessages(\n params.directoryTopicId,\n {\n sequenceNumber: `eq:${params.skillUid}`,\n limit: 5,\n order: 'asc',\n },\n );\n\n for (const message of messages) {\n const parsedNew = hcs26DiscoveryRegisterSchema.safeParse(message);\n const parsedLegacy = parsedNew.success\n ? null\n : hcs26DiscoveryRegisterLegacySchema.safeParse(message);\n const parsed = parsedNew.success\n ? parsedNew\n : parsedLegacy && parsedLegacy.success\n ? parsedLegacy\n : null;\n if (!parsed) {\n continue;\n }\n\n const normalized = normalizeDiscoveryRegister(\n parsed.data as Hcs26DiscoveryRegister | Hcs26DiscoveryRegisterLegacy,\n message.sequence_number,\n );\n const seq = normalized.sequence_number;\n if (typeof seq === 'number' && seq === params.skillUid) {\n const metadata = await this.resolveDiscoveryMetadataObject({\n metadata: normalized.metadata,\n mode: 'full',\n });\n return { ...normalized, metadata };\n }\n }\n\n return null;\n }\n\n async resolveDiscoveryRecord(params: {\n directoryTopicId: string;\n skillUid: number;\n scanLimit?: number;\n }): Promise<NormalizedDiscoveryRegister | null> {\n const register = await this.getDiscoveryRegister({\n directoryTopicId: params.directoryTopicId,\n skillUid: params.skillUid,\n });\n if (!register) {\n return null;\n }\n\n const scanLimit =\n typeof params.scanLimit === 'number' && params.scanLimit > 0\n ? Math.min(5000, Math.floor(params.scanLimit))\n : 1000;\n\n const messages = await this.mirrorNode.getTopicMessages(\n params.directoryTopicId,\n {\n limit: scanLimit,\n order: 'asc',\n },\n );\n\n const uid = String(params.skillUid);\n const registerSequence = resolveSequenceNumber(\n register.sequence_number,\n params.skillUid,\n );\n\n let current: NormalizedDiscoveryRegister = register;\n for (const message of messages) {\n const messageSequence = resolveSequenceNumber(\n undefined,\n message.sequence_number,\n );\n const deleteParsed = hcs26DiscoveryDeleteSchema.safeParse(message);\n if (deleteParsed.success && deleteParsed.data.uid === uid) {\n const deleteSequence = resolveSequenceNumber(\n deleteParsed.data.sequence_number,\n messageSequence,\n );\n if (\n registerSequence !== null &&\n deleteSequence !== null &&\n deleteSequence <= registerSequence\n ) {\n continue;\n }\n return null;\n }\n\n const updateParsedNew = hcs26DiscoveryUpdateSchema.safeParse(message);\n const updateParsedLegacy = updateParsedNew.success\n ? null\n : hcs26DiscoveryUpdateLegacySchema.safeParse(message);\n const updateParsed = updateParsedNew.success\n ? updateParsedNew\n : updateParsedLegacy && updateParsedLegacy.success\n ? updateParsedLegacy\n : null;\n if (!updateParsed || updateParsed.data.uid !== uid) {\n continue;\n }\n const updateSequence = resolveSequenceNumber(\n updateParsed.data.sequence_number,\n messageSequence,\n );\n if (\n registerSequence !== null &&\n updateSequence !== null &&\n updateSequence <= registerSequence\n ) {\n continue;\n }\n\n const nextAccountId =\n 'account_id' in updateParsed.data\n ? normalizeUidString(updateParsed.data.account_id)\n : normalizeUidString(updateParsed.data.publisher);\n const nextMetadataRaw = updateParsed.data.metadata;\n const nextMetadata =\n nextMetadataRaw !== undefined\n ? await this.resolveDiscoveryMetadataObject({\n metadata: nextMetadataRaw,\n mode: 'patch',\n })\n : undefined;\n current = {\n ...current,\n ...(nextAccountId ? { account_id: nextAccountId } : {}),\n metadata: mergeDiscoveryMetadata(current.metadata, nextMetadata),\n };\n }\n\n return current;\n }\n\n async listVersionRegisters(params: {\n versionRegistryTopicId: string;\n skillUid: number;\n limit?: number;\n }): Promise<Array<Hcs26VersionRegister | Hcs26VersionRegisterLegacy>> {\n const limit =\n typeof params.limit === 'number' && params.limit > 0\n ? Math.min(1000, params.limit)\n : 500;\n const messages = await this.mirrorNode.getTopicMessages(\n params.versionRegistryTopicId,\n {\n limit,\n order: 'desc',\n },\n );\n\n const registersByUid = new Map<\n string,\n {\n register: Hcs26VersionRegister | Hcs26VersionRegisterLegacy;\n sequenceNumber: number | null;\n }\n >();\n const updatesByUid = new Map<\n string,\n Array<{ update: Hcs26VersionUpdate; sequenceNumber: number | null }>\n >();\n const deletedByUid = new Map<string, number[]>();\n\n for (const message of messages) {\n const parsedNew = hcs26VersionRegisterSchema.safeParse(message);\n const parsedLegacy = parsedNew.success\n ? null\n : hcs26VersionRegisterLegacySchema.safeParse(message);\n const registerParsed = parsedNew.success\n ? parsedNew\n : parsedLegacy && parsedLegacy.success\n ? parsedLegacy\n : null;\n\n if (registerParsed) {\n if (registerParsed.data.skill_uid !== params.skillUid) {\n continue;\n }\n const uid =\n typeof registerParsed.data.sequence_number === 'number'\n ? String(registerParsed.data.sequence_number)\n : typeof message.sequence_number === 'number'\n ? String(message.sequence_number)\n : null;\n if (uid) {\n const registerSequence = resolveSequenceNumber(\n registerParsed.data.sequence_number,\n message.sequence_number,\n );\n registersByUid.set(uid, {\n register: registerParsed.data as\n | Hcs26VersionRegister\n | Hcs26VersionRegisterLegacy,\n sequenceNumber: registerSequence,\n });\n }\n continue;\n }\n\n const updateParsed = hcs26VersionUpdateSchema.safeParse(message);\n if (updateParsed.success) {\n const uid = updateParsed.data.uid.trim();\n const list = updatesByUid.get(uid) ?? [];\n list.push({\n update: updateParsed.data,\n sequenceNumber: resolveSequenceNumber(\n updateParsed.data.sequence_number,\n message.sequence_number,\n ),\n });\n updatesByUid.set(uid, list);\n continue;\n }\n\n const deleteParsed = hcs26VersionDeleteSchema.safeParse(message);\n if (deleteParsed.success) {\n const uid = deleteParsed.data.uid.trim();\n const list = deletedByUid.get(uid) ?? [];\n const sequenceNumber = resolveSequenceNumber(\n deleteParsed.data.sequence_number,\n message.sequence_number,\n );\n if (sequenceNumber !== null) {\n list.push(sequenceNumber);\n deletedByUid.set(uid, list);\n }\n }\n }\n\n const entries: Array<Hcs26VersionRegister | Hcs26VersionRegisterLegacy> =\n [];\n for (const [uid, registerState] of registersByUid.entries()) {\n const registerSequence =\n registerState.sequenceNumber ?? parseSequenceFromUid(uid);\n const deleteSequences = deletedByUid.get(uid) ?? [];\n const hasDeleteAfterRegister = deleteSequences.some(sequence =>\n registerSequence === null ? true : sequence > registerSequence,\n );\n if (hasDeleteAfterRegister) {\n continue;\n }\n\n const updates = updatesByUid.get(uid);\n if (!updates || updates.length === 0) {\n entries.push(registerState.register);\n continue;\n }\n\n const sorted = [...updates]\n .filter(update =>\n registerSequence === null\n ? true\n : update.sequenceNumber !== null &&\n update.sequenceNumber > registerSequence,\n )\n .sort((a, b) => {\n const aSeq = a.sequenceNumber ?? 0;\n const bSeq = b.sequenceNumber ?? 0;\n return aSeq - bSeq;\n });\n if (sorted.length === 0) {\n entries.push(registerState.register);\n continue;\n }\n\n const final = sorted.reduce<\n Hcs26VersionRegister | Hcs26VersionRegisterLegacy\n >((acc, updateState) => {\n if (updateState.update.status) {\n return { ...acc, status: updateState.update.status };\n }\n return acc;\n }, registerState.register);\n entries.push(final);\n }\n\n return entries;\n }\n\n async getLatestVersionRegister(params: {\n versionRegistryTopicId: string;\n skillUid: number;\n }): Promise<(Hcs26VersionRegister | Hcs26VersionRegisterLegacy) | null> {\n const entries = await this.listVersionRegisters({\n versionRegistryTopicId: params.versionRegistryTopicId,\n skillUid: params.skillUid,\n limit: 100,\n });\n const active = entries.filter(entry => isActiveStatus(entry.status));\n if (active.length === 0) {\n return null;\n }\n\n let best = active[0];\n let bestParsed = parseSemver(best.version);\n\n for (let index = 1; index < active.length; index += 1) {\n const candidate = active[index];\n const candidateParsed = parseSemver(candidate.version);\n\n if (!bestParsed && candidateParsed) {\n best = candidate;\n bestParsed = candidateParsed;\n continue;\n }\n\n if (bestParsed && candidateParsed) {\n const cmp = compareSemver(candidateParsed, bestParsed);\n if (cmp > 0) {\n best = candidate;\n bestParsed = candidateParsed;\n continue;\n }\n\n if (cmp === 0) {\n const bestSeq =\n typeof best.sequence_number === 'number' ? best.sequence_number : 0;\n const candSeq =\n typeof candidate.sequence_number === 'number'\n ? candidate.sequence_number\n : 0;\n if (candSeq > bestSeq) {\n best = candidate;\n bestParsed = candidateParsed;\n }\n }\n }\n }\n\n return best;\n }\n\n async resolveManifest(params: {\n manifestHrl?: string;\n manifestTopicId?: string;\n }): Promise<{\n manifest: Hcs26SkillManifest;\n raw: unknown;\n sha256Hex: string;\n }> {\n const manifestHrl =\n typeof params.manifestHrl === 'string' &&\n params.manifestHrl.trim().length > 0\n ? params.manifestHrl.trim()\n : typeof params.manifestTopicId === 'string' &&\n params.manifestTopicId.trim().length > 0\n ? `hcs://1/${params.manifestTopicId.trim()}`\n : null;\n if (!manifestHrl) {\n throw new Error('Manifest HRL or topic id is required');\n }\n\n const resolved = await this.hrlResolver.resolve(manifestHrl, {\n network: this.network,\n returnRaw: true,\n });\n\n const contentType = resolved.contentType ?? '';\n if (!contentType.toLowerCase().startsWith('application/json')) {\n throw new Error(\n `Expected application/json for manifest, got ${resolved.contentType ?? 'unknown'}`,\n );\n }\n\n const bytes =\n resolved.content instanceof ArrayBuffer\n ? Buffer.from(resolved.content)\n : Buffer.from(String(resolved.content), 'utf8');\n\n const sha256Hex = await hash(bytes, 'sha256');\n\n let raw: unknown;\n try {\n raw = JSON.parse(bytes.toString('utf8'));\n } catch {\n throw new Error('Manifest content is not valid JSON');\n }\n\n const parsed = hcs26SkillManifestSchema.safeParse(raw);\n if (!parsed.success) {\n throw new Error(`Invalid HCS-26 manifest: ${parsed.error.message}`);\n }\n\n const hasSkillMd = parsed.data.files.some(file => file.path === 'SKILL.md');\n if (!hasSkillMd) {\n throw new Error(\n 'HCS-26 manifest must include SKILL.md at path \"SKILL.md\"',\n );\n }\n\n return { manifest: parsed.data, raw, sha256Hex };\n }\n\n async verifyVersionRegisterMatchesManifest(params: {\n versionRegister: Hcs26VersionRegister | Hcs26VersionRegisterLegacy;\n manifestSha256Hex: string;\n }): Promise<void> {\n const checksumRaw = params.versionRegister.checksum;\n if (!checksumRaw) {\n this.logger.warn(\n 'HCS-26 version register is missing checksum; skipping manifest verification.',\n );\n return;\n }\n\n const checksum = checksumRaw.trim();\n if (!checksum.startsWith('sha256:')) {\n throw new Error(`Unsupported checksum: ${checksum}`);\n }\n const expectedHex = checksum.slice('sha256:'.length);\n if (params.manifestSha256Hex !== expectedHex) {\n throw new Error(\n `Manifest checksum mismatch (expected ${expectedHex}, got ${params.manifestSha256Hex})`,\n );\n }\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es123.js","sources":["../../src/hcs-25/collectors/freshness.ts"],"sourcesContent":["import type { Hcs25JsonValue, Hcs25Subject } from '../types';\nimport { isJsonObject } from '../signals';\n\n/**\n * Reads an ISO-8601/epoch timestamp field into milliseconds, or null.\n */\nexport function parseTimestampMs(value: unknown): number | null {\n if (value instanceof Date) {\n return value.getTime();\n }\n if (typeof value === 'string') {\n const parsed = Date.parse(value);\n return Number.isFinite(parsed) ? parsed : null;\n }\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n return null;\n}\n\n/**\n * Options for {@link shouldRefreshStoredFields}.\n */\nexport interface Hcs25FreshnessGate {\n /**\n * Metadata scope holding the fields: `root` reads `metadata.<key>`\n * directly; any other value reads `metadata.<scope>.<key>`.\n */\n scope?: 'root' | (string & {});\n /** Field storing the last refresh timestamp. Default `updatedAt`. */\n updatedAtKey?: string;\n /** Field storing the last status (`ok` vs failure states). */\n statusKey?: string;\n /** TTL applied when the stored status is `ok`. */\n ttlMs: number;\n /** TTL applied for non-`ok` statuses (default: same as `ttlMs`). */\n failureTtlMs?: number;\n /** Clock for the comparison. */\n now?: Date;\n /** When true, always refresh (equivalent to `context.force`). */\n force?: boolean;\n}\n\nfunction readField(subject: Hcs25Subject, scope: string, key: string): unknown {\n const metadata = subject.metadata ?? {};\n if (scope === 'root') {\n return (metadata as Record<string, Hcs25JsonValue>)[key];\n }\n const record = metadata[scope];\n if (!isJsonObject(record)) {\n return undefined;\n }\n return (record as Record<string, Hcs25JsonValue>)[key];\n}\n\n/**\n * Production-style refresh gating (Registry Broker): a signal with a stored\n * `ok` status is refreshed once `ttlMs` has elapsed since its stored\n * timestamp; failures use `failureTtlMs` so transiently missing/erroring\n * sources re-check sooner. Returns false when the stored fields are still\n * fresh and the adapter may skip collection entirely.\n */\nexport function shouldRefreshStoredFields(\n subject: Hcs25Subject,\n options: Hcs25FreshnessGate,\n): boolean {\n if (options.force) {\n return true;\n }\n const scope = options.scope ?? 'root';\n const updatedAt = parseTimestampMs(\n readField(subject, scope, options.updatedAtKey ?? 'updatedAt'),\n );\n if (updatedAt === null) {\n return true;\n }\n const status = readField(subject, scope, options.statusKey ?? 'status');\n const normalizedStatus = typeof status === 'string' ? status.trim() : '';\n if (!normalizedStatus) {\n return true;\n }\n const ttl =\n normalizedStatus === 'ok'\n ? options.ttlMs\n : (options.failureTtlMs ?? options.ttlMs);\n const now = options.now ?? new Date();\n return now.getTime() - updatedAt >= ttl;\n}\n"],"names":[],"mappings":";;;;;;AAMO,SAAS,iBAAiB,OAA+B;AAC9D,MAAI,iBAAiB,MAAM;AACzB,WAAO,MAAM,QAAA;AAAA,EACf;AACA,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,WAAO,OAAO,SAAS,MAAM,IAAI,SAAS;AAAA,EAC5C;AACA,MAAI,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,GAAG;AACvD,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAyBA,SAAS,UAAU,SAAuB,OAAe,KAAsB;AAC7E,QAAM,WAAW,QAAQ,YAAY,CAAA;AACrC,MAAI,UAAU,QAAQ;AACpB,WAAQ,SAA4C,GAAG;AAAA,EACzD;AACA,QAAM,SAAS,SAAS,KAAK;AAC7B,MAAI,CAAC,aAAa,MAAM,GAAG;AACzB,WAAO;AAAA,EACT;AACA,SAAQ,OAA0C,GAAG;AACvD;AASO,SAAS,0BACd,SACA,SACS;AACT,MAAI,QAAQ,OAAO;AACjB,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,QAAQ,SAAS;AAC/B,QAAM,YAAY;AAAA,IAChB,UAAU,SAAS,OAAO,QAAQ,gBAAgB,WAAW;AAAA,EAAA;AAE/D,MAAI,cAAc,MAAM;AACtB,WAAO;AAAA,EACT;AACA,QAAM,SAAS,UAAU,SAAS,OAAO,QAAQ,aAAa,QAAQ;AACtE,QAAM,mBAAmB,OAAO,WAAW,WAAW,OAAO,SAAS;AACtE,MAAI,CAAC,kBAAkB;AACrB,WAAO;AAAA,EACT;AACA,QAAM,MACJ,qBAAqB,OACjB,QAAQ,QACP,QAAQ,gBAAgB,QAAQ;AACvC,QAAM,MAAM,QAAQ,OAAO,oBAAI,KAAA;AAC/B,SAAO,IAAI,YAAY,aAAa;AACtC;"}
@@ -1,108 +1,34 @@
1
- import { z } from "zod";
2
- import { hcs26TopicTypeEnumSchema, HCS26_PROTOCOL, hcs26OperationEnumSchema } from "./standards-sdk.es122.js";
3
- const HCS26_DEFAULT_TTL_SECONDS = 86400;
4
- function toPositiveInt(value) {
5
- if (!Number.isFinite(value)) {
6
- throw new Error("Expected a finite number");
7
- }
8
- const intValue = Math.floor(value);
9
- if (intValue <= 0) {
10
- throw new Error("Expected a positive integer");
11
- }
12
- return intValue;
13
- }
14
- function buildHcs26TopicMemo(input) {
15
- const indexed = input.indexed ?? true;
16
- const ttlSeconds = toPositiveInt(
17
- input.ttlSeconds ?? HCS26_DEFAULT_TTL_SECONDS
18
- );
19
- const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);
20
- const indexedSegment = indexed ? "0" : "1";
21
- return `${HCS26_PROTOCOL}:${indexedSegment}:${ttlSeconds}:${topicType}`;
22
- }
23
- function parseHcs26TopicMemo(memoRaw) {
24
- const memo = memoRaw.trim();
25
- if (!memo) {
26
- return null;
27
- }
28
- const match = memo.match(/^hcs-26:(\d+):(\d+):(\d+)$/);
29
- if (!match) {
30
- return null;
31
- }
32
- const indexedSegment = Number(match[1]);
33
- const ttlSeconds = Number(match[2]);
34
- const topicType = Number(match[3]);
35
- if (![indexedSegment, ttlSeconds, topicType].every(Number.isFinite)) {
36
- return null;
37
- }
38
- const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);
39
- if (!parsedTopicType.success) {
40
- return null;
41
- }
42
- if (indexedSegment !== 0 && indexedSegment !== 1) {
43
- return null;
44
- }
45
- return {
46
- protocol: HCS26_PROTOCOL,
47
- indexed: indexedSegment === 0,
48
- ttlSeconds,
49
- topicType: parsedTopicType.data
1
+ import { isJsonObject } from "./standards-sdk.es201.js";
2
+ import "./standards-sdk.es184.js";
3
+ import "./standards-sdk.es198.js";
4
+ import "./standards-sdk.es199.js";
5
+ import "./standards-sdk.es200.js";
6
+ import "./standards-sdk.es183.js";
7
+ function applyCollectedFields(subject, fieldsList) {
8
+ if (fieldsList.length === 0) {
9
+ return subject;
10
+ }
11
+ const metadata = {
12
+ ...subject.metadata ?? {}
50
13
  };
14
+ for (const fields of fieldsList) {
15
+ if (fields.scope === "root") {
16
+ for (const [key, value] of Object.entries(fields.values)) {
17
+ metadata[key] = value;
18
+ }
19
+ continue;
20
+ }
21
+ const scopeKey = fields.scope;
22
+ const existing = metadata[scopeKey];
23
+ const record = isJsonObject(existing) ? { ...existing } : {};
24
+ for (const [key, value] of Object.entries(fields.values)) {
25
+ record[key] = value;
26
+ }
27
+ metadata[scopeKey] = record;
28
+ }
29
+ return { ...subject, metadata };
51
30
  }
52
- function buildHcs26TransactionMemo(input) {
53
- const operation = hcs26OperationEnumSchema.parse(input.operation);
54
- const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);
55
- return `${HCS26_PROTOCOL}:op:${operation}:${topicType}`;
56
- }
57
- function parseHcs26TransactionMemo(memoRaw) {
58
- const memo = memoRaw.trim();
59
- if (!memo) {
60
- return null;
61
- }
62
- const match = memo.match(/^hcs-26:op:(\d+):(\d+)$/);
63
- if (!match) {
64
- return null;
65
- }
66
- const operation = Number(match[1]);
67
- const topicType = Number(match[2]);
68
- if (![operation, topicType].every(Number.isFinite)) {
69
- return null;
70
- }
71
- const parsedOperation = hcs26OperationEnumSchema.safeParse(operation);
72
- if (!parsedOperation.success) {
73
- return null;
74
- }
75
- const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);
76
- if (!parsedTopicType.success) {
77
- return null;
78
- }
79
- return {
80
- protocol: HCS26_PROTOCOL,
81
- operation: parsedOperation.data,
82
- topicType: parsedTopicType.data
83
- };
84
- }
85
- const hcs26TopicMemoSchema = z.string().transform((value) => {
86
- const parsed = parseHcs26TopicMemo(value);
87
- if (!parsed) {
88
- throw new Error("Invalid HCS-26 topic memo");
89
- }
90
- return parsed;
91
- });
92
- const hcs26TransactionMemoSchema = z.string().transform((value) => {
93
- const parsed = parseHcs26TransactionMemo(value);
94
- if (!parsed) {
95
- throw new Error("Invalid HCS-26 transaction memo");
96
- }
97
- return parsed;
98
- });
99
31
  export {
100
- HCS26_DEFAULT_TTL_SECONDS,
101
- buildHcs26TopicMemo,
102
- buildHcs26TransactionMemo,
103
- hcs26TopicMemoSchema,
104
- hcs26TransactionMemoSchema,
105
- parseHcs26TopicMemo,
106
- parseHcs26TransactionMemo
32
+ applyCollectedFields
107
33
  };
108
34
  //# sourceMappingURL=standards-sdk.es124.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es124.js","sources":["../../src/hcs-26/memos.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n HCS26_PROTOCOL,\n hcs26OperationEnumSchema,\n hcs26TopicTypeEnumSchema,\n type Hcs26OperationEnum,\n type Hcs26TopicTypeEnum,\n} from './types';\n\nexport type Hcs26TopicMemo = {\n protocol: typeof HCS26_PROTOCOL;\n indexed: boolean;\n ttlSeconds: number;\n topicType: Hcs26TopicTypeEnum;\n};\n\nexport const HCS26_DEFAULT_TTL_SECONDS = 86400;\n\nfunction toPositiveInt(value: number): number {\n if (!Number.isFinite(value)) {\n throw new Error('Expected a finite number');\n }\n const intValue = Math.floor(value);\n if (intValue <= 0) {\n throw new Error('Expected a positive integer');\n }\n return intValue;\n}\n\nexport function buildHcs26TopicMemo(input: {\n indexed?: boolean;\n ttlSeconds?: number;\n topicType: Hcs26TopicTypeEnum;\n}): string {\n const indexed = input.indexed ?? true;\n const ttlSeconds = toPositiveInt(\n input.ttlSeconds ?? HCS26_DEFAULT_TTL_SECONDS,\n );\n const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);\n\n // HCS-2 memo convention: indexed topics use \"0\" in the second segment.\n const indexedSegment = indexed ? '0' : '1';\n return `${HCS26_PROTOCOL}:${indexedSegment}:${ttlSeconds}:${topicType}`;\n}\n\nexport function parseHcs26TopicMemo(memoRaw: string): Hcs26TopicMemo | null {\n const memo = memoRaw.trim();\n if (!memo) {\n return null;\n }\n\n const match = memo.match(/^hcs-26:(\\d+):(\\d+):(\\d+)$/);\n if (!match) {\n return null;\n }\n\n const indexedSegment = Number(match[1]);\n const ttlSeconds = Number(match[2]);\n const topicType = Number(match[3]);\n\n if (![indexedSegment, ttlSeconds, topicType].every(Number.isFinite)) {\n return null;\n }\n\n const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);\n if (!parsedTopicType.success) {\n return null;\n }\n\n if (indexedSegment !== 0 && indexedSegment !== 1) {\n return null;\n }\n\n return {\n protocol: HCS26_PROTOCOL,\n indexed: indexedSegment === 0,\n ttlSeconds,\n topicType: parsedTopicType.data,\n };\n}\n\nexport function buildHcs26TransactionMemo(input: {\n operation: Hcs26OperationEnum;\n topicType: Hcs26TopicTypeEnum;\n}): string {\n const operation = hcs26OperationEnumSchema.parse(input.operation);\n const topicType = hcs26TopicTypeEnumSchema.parse(input.topicType);\n return `${HCS26_PROTOCOL}:op:${operation}:${topicType}`;\n}\n\nexport type Hcs26TransactionMemo = {\n protocol: typeof HCS26_PROTOCOL;\n operation: Hcs26OperationEnum;\n topicType: Hcs26TopicTypeEnum;\n};\n\nexport function parseHcs26TransactionMemo(\n memoRaw: string,\n): Hcs26TransactionMemo | null {\n const memo = memoRaw.trim();\n if (!memo) {\n return null;\n }\n\n const match = memo.match(/^hcs-26:op:(\\d+):(\\d+)$/);\n if (!match) {\n return null;\n }\n\n const operation = Number(match[1]);\n const topicType = Number(match[2]);\n if (![operation, topicType].every(Number.isFinite)) {\n return null;\n }\n\n const parsedOperation = hcs26OperationEnumSchema.safeParse(operation);\n if (!parsedOperation.success) {\n return null;\n }\n const parsedTopicType = hcs26TopicTypeEnumSchema.safeParse(topicType);\n if (!parsedTopicType.success) {\n return null;\n }\n\n return {\n protocol: HCS26_PROTOCOL,\n operation: parsedOperation.data,\n topicType: parsedTopicType.data,\n };\n}\n\nexport const hcs26TopicMemoSchema = z.string().transform(value => {\n const parsed = parseHcs26TopicMemo(value);\n if (!parsed) {\n throw new Error('Invalid HCS-26 topic memo');\n }\n return parsed;\n});\n\nexport const hcs26TransactionMemoSchema = z.string().transform(value => {\n const parsed = parseHcs26TransactionMemo(value);\n if (!parsed) {\n throw new Error('Invalid HCS-26 transaction memo');\n }\n return parsed;\n});\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"standards-sdk.es124.js","sources":["../../src/hcs-25/collectors/merge.ts"],"sourcesContent":["import type { Hcs25JsonValue, Hcs25Subject } from '../types';\nimport { isJsonObject } from '../signals';\nimport type { Hcs25CollectedFields } from './types';\n\n/**\n * Immutably merges collected fields into a subject's metadata, honoring the\n * storage scopes documented by the HCS-25 signal catalog: `root` writes\n * `metadata.<key>`, `metrics` writes `metadata.metrics.<key>`, `additional`\n * writes `metadata.additional.<key>`, and any other scope string merges into\n * the `metadata.<scope>` record (e.g. `outputVerificationSummary`).\n */\nexport function applyCollectedFields(\n subject: Hcs25Subject,\n fieldsList: readonly Hcs25CollectedFields[],\n): Hcs25Subject {\n if (fieldsList.length === 0) {\n return subject;\n }\n\n const metadata: Record<string, Hcs25JsonValue> = {\n ...(subject.metadata ?? {}),\n };\n\n for (const fields of fieldsList) {\n if (fields.scope === 'root') {\n for (const [key, value] of Object.entries(fields.values)) {\n metadata[key] = value;\n }\n continue;\n }\n\n const scopeKey = fields.scope;\n const existing = metadata[scopeKey];\n const record: Record<string, Hcs25JsonValue> = isJsonObject(existing)\n ? { ...existing }\n : {};\n for (const [key, value] of Object.entries(fields.values)) {\n record[key] = value;\n }\n metadata[scopeKey] = record;\n }\n\n return { ...subject, metadata };\n}\n"],"names":[],"mappings":";;;;;;AAWO,SAAS,qBACd,SACA,YACc;AACd,MAAI,WAAW,WAAW,GAAG;AAC3B,WAAO;AAAA,EACT;AAEA,QAAM,WAA2C;AAAA,IAC/C,GAAI,QAAQ,YAAY,CAAA;AAAA,EAAC;AAG3B,aAAW,UAAU,YAAY;AAC/B,QAAI,OAAO,UAAU,QAAQ;AAC3B,iBAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AACxD,iBAAS,GAAG,IAAI;AAAA,MAClB;AACA;AAAA,IACF;AAEA,UAAM,WAAW,OAAO;AACxB,UAAM,WAAW,SAAS,QAAQ;AAClC,UAAM,SAAyC,aAAa,QAAQ,IAChE,EAAE,GAAG,SAAA,IACL,CAAA;AACJ,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,OAAO,MAAM,GAAG;AACxD,aAAO,GAAG,IAAI;AAAA,IAChB;AACA,aAAS,QAAQ,IAAI;AAAA,EACvB;AAEA,SAAO,EAAE,GAAG,SAAS,SAAA;AACvB;"}
@@ -1,163 +1,203 @@
1
- import { Logger } from "./standards-sdk.es128.js";
2
- import { Hcs26SkillRegistryResolver } from "./standards-sdk.es123.js";
3
- function getManifestTopicId(entry) {
4
- const topicIdCandidate = entry.t_id;
5
- if (typeof topicIdCandidate === "string" && topicIdCandidate.trim()) {
6
- return topicIdCandidate.trim();
7
- }
8
- const hrlCandidate = entry.manifest_hcs1;
9
- if (typeof hrlCandidate !== "string" || !hrlCandidate.trim()) {
10
- throw new Error("Missing manifest reference in version register entry");
11
- }
12
- const hrl = hrlCandidate.trim();
13
- const prefix = "hcs://1/";
14
- if (!hrl.startsWith(prefix)) {
15
- throw new Error(`Invalid manifest HRL: ${hrl}`);
16
- }
17
- return hrl.slice(prefix.length);
1
+ import { isValidSignalId, isValidAdapterId } from "./standards-sdk.es117.js";
2
+ import { applyCollectedFields } from "./standards-sdk.es124.js";
3
+ import { resolveFetch, Hcs25CollectorTimeoutError, isTimeoutError } from "./standards-sdk.es122.js";
4
+ const DEFAULT_TIMEOUT_MS = 3e4;
5
+ function isSignalAdapterApplicable(rule, subject) {
6
+ if (rule.includeRegistries) {
7
+ if (subject.registry === void 0 || !rule.includeRegistries.includes(subject.registry)) {
8
+ return false;
9
+ }
10
+ }
11
+ if (rule.excludeRegistries && subject.registry !== void 0 && rule.excludeRegistries.includes(subject.registry)) {
12
+ return false;
13
+ }
14
+ if (rule.appliesTo && !rule.appliesTo(subject)) {
15
+ return false;
16
+ }
17
+ return true;
18
18
  }
19
- class HCS26BaseClient {
20
- constructor(config) {
21
- this.network = config.network;
22
- this.logger = config.logger ?? Logger.getInstance({
23
- module: "HCS26Client",
24
- level: "info"
25
- });
26
- this.verificationProvider = config.verificationProvider;
27
- this.resolver = new Hcs26SkillRegistryResolver({
28
- network: this.network,
29
- logger: this.logger,
30
- mirrorNode: config.mirrorNode
31
- });
19
+ function validateSignalAdapter(adapter) {
20
+ if (!isValidAdapterId(adapter.id)) {
21
+ throw new TypeError(
22
+ `invalid signal adapter id "${String(adapter.id)}": identifiers must match ^[a-z][a-z0-9]*(-[a-z][a-z0-9]*)*$`
23
+ );
32
24
  }
33
- async resolveSkill(params) {
34
- const discovery = await this.resolver.resolveDiscoveryRecord({
35
- directoryTopicId: params.directoryTopicId,
36
- skillUid: params.skillUid,
37
- scanLimit: params.discoveryScanLimit
38
- });
39
- if (!discovery) {
40
- return null;
41
- }
42
- const versionRegistryTopicId = discovery.t_id;
43
- const latestVersion = await this.resolver.getLatestVersionRegister({
44
- versionRegistryTopicId,
45
- skillUid: params.skillUid
46
- });
47
- if (!latestVersion) {
48
- throw new Error(
49
- `No active version entries found for skill ${params.skillUid} in version registry ${versionRegistryTopicId}`
25
+ if (!Array.isArray(adapter.produces) || adapter.produces.length === 0) {
26
+ throw new TypeError(
27
+ `signal adapter "${adapter.id}" must declare at least one produced signalId`
28
+ );
29
+ }
30
+ for (const signalId of adapter.produces) {
31
+ if (!isValidSignalId(signalId)) {
32
+ throw new TypeError(
33
+ `signal adapter "${adapter.id}" declares invalid signalId "${String(signalId)}"`
50
34
  );
51
35
  }
52
- const manifestTopicId = getManifestTopicId(latestVersion);
53
- const { manifest, sha256Hex } = await this.resolver.resolveManifest({
54
- manifestTopicId
55
- });
56
- await this.resolver.verifyVersionRegisterMatchesManifest({
57
- versionRegister: latestVersion,
58
- manifestSha256Hex: sha256Hex
59
- });
60
- let verification;
61
- const provider = this.verificationProvider;
62
- const includeVerification = params.includeVerification === true;
63
- const name = typeof discovery.metadata?.name === "string" ? discovery.metadata.name.trim() : "";
64
- if (includeVerification && provider && name) {
65
- try {
66
- verification = await provider.getSkillVerificationStatus({ name });
67
- } catch (error) {
68
- const detail = error instanceof Error ? error.message : String(error);
69
- this.logger.warn(
70
- `Failed to resolve verification status for skill "${name}": ${detail}`
71
- );
72
- verification = null;
36
+ }
37
+ if (typeof adapter.collect !== "function") {
38
+ throw new TypeError(
39
+ `signal adapter "${adapter.id}" must declare a collect function`
40
+ );
41
+ }
42
+ }
43
+ function isStale(fetchedAt, staleAfterMs, now) {
44
+ if (!fetchedAt) {
45
+ return false;
46
+ }
47
+ const fetchedMs = Date.parse(fetchedAt);
48
+ if (Number.isNaN(fetchedMs)) {
49
+ return false;
50
+ }
51
+ return now.getTime() - fetchedMs > staleAfterMs;
52
+ }
53
+ function applyFreshness(result, staleAfterMs, now) {
54
+ if (staleAfterMs === void 0 || result.status !== "ok") {
55
+ return result;
56
+ }
57
+ const fetchedAt = result.provenance?.fetchedAt;
58
+ if (!isStale(fetchedAt, staleAfterMs, now)) {
59
+ return result;
60
+ }
61
+ return {
62
+ ...result,
63
+ status: "stale",
64
+ fields: markStatusFieldsStale(result.fields)
65
+ };
66
+ }
67
+ function markStatusFieldsStale(fields) {
68
+ if (!fields) {
69
+ return fields;
70
+ }
71
+ return fields.map((block) => {
72
+ const values = { ...block.values };
73
+ for (const key of Object.keys(values)) {
74
+ if (key.endsWith("Status") && typeof values[key] === "string") {
75
+ values[key] = "stale";
73
76
  }
74
77
  }
75
- return {
76
- directoryTopicId: params.directoryTopicId,
77
- skillUid: params.skillUid,
78
- discovery,
79
- versionRegistryTopicId,
80
- latestVersion,
81
- manifest,
82
- manifestSha256Hex: sha256Hex,
83
- ...includeVerification ? { verification } : {}
84
- };
85
- }
86
- async listSkillVersions(params) {
87
- const discovery = await this.resolver.resolveDiscoveryRecord({
88
- directoryTopicId: params.directoryTopicId,
89
- skillUid: params.skillUid,
90
- scanLimit: params.discoveryScanLimit
91
- });
92
- if (!discovery) {
93
- return [];
94
- }
95
- const versionRegistryTopicId = discovery.t_id;
96
- return this.resolver.listVersionRegisters({
97
- versionRegistryTopicId,
98
- skillUid: params.skillUid,
99
- limit: params.limit
100
- });
78
+ return { ...block, values };
79
+ });
80
+ }
81
+ function toSignal(result, now) {
82
+ return {
83
+ status: result.status,
84
+ value: result.value,
85
+ fetchedAt: result.provenance?.fetchedAt ?? now.toISOString(),
86
+ provenance: result.provenance
87
+ };
88
+ }
89
+ function summarizeStatuses(counts) {
90
+ if (counts.has("error")) {
91
+ return "error";
92
+ }
93
+ if (counts.has("timeout")) {
94
+ return "timeout";
95
+ }
96
+ if (counts.size === 0) {
97
+ return "missing";
98
+ }
99
+ if ((counts.get("ok") ?? 0) > 0 || counts.has("stale")) {
100
+ return "ok";
101
101
  }
102
- async resolveSkillVersion(params) {
103
- const versionRaw = params.version.trim();
104
- if (!versionRaw) {
105
- throw new Error("version is required");
102
+ return "missing";
103
+ }
104
+ async function collectHcs25Signals(subject, options) {
105
+ const fetch = resolveFetch(options.fetch);
106
+ const now = options.now ?? /* @__PURE__ */ new Date();
107
+ const snapshot = { ...options.previousSnapshot ?? {} };
108
+ const results = [];
109
+ let current = subject;
110
+ for (const adapter of options.adapters) {
111
+ validateSignalAdapter(adapter);
112
+ if (!isSignalAdapterApplicable(adapter, current)) {
113
+ results.push({
114
+ adapterId: adapter.id,
115
+ applicable: false,
116
+ signalIds: [],
117
+ status: "missing"
118
+ });
119
+ continue;
106
120
  }
107
- const discovery = await this.resolver.resolveDiscoveryRecord({
108
- directoryTopicId: params.directoryTopicId,
109
- skillUid: params.skillUid,
110
- scanLimit: params.discoveryScanLimit
111
- });
112
- if (!discovery) {
113
- return null;
121
+ const timeoutMs = adapter.timeoutMs ?? options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
122
+ const controller = new AbortController();
123
+ let timer;
124
+ let adapterResults;
125
+ let runStatus;
126
+ let runError;
127
+ try {
128
+ adapterResults = await Promise.race([
129
+ adapter.collect(current, {
130
+ subject: current,
131
+ fetch,
132
+ timeoutMs,
133
+ now,
134
+ signal: controller.signal,
135
+ force: options.force === true
136
+ }),
137
+ new Promise((_resolve, reject) => {
138
+ timer = setTimeout(() => {
139
+ controller.abort();
140
+ reject(new Hcs25CollectorTimeoutError());
141
+ }, timeoutMs + 1);
142
+ })
143
+ ]);
144
+ clearTimeout(timer);
145
+ if (adapterResults.length === 0) {
146
+ adapterResults = adapter.produces.filter((signalId) => !(signalId in snapshot)).map((signalId) => ({ signalId, status: "missing" }));
147
+ }
148
+ } catch (error) {
149
+ const status = isTimeoutError(error) ? "timeout" : "error";
150
+ runStatus = status;
151
+ runError = error instanceof Error ? error.message : String(error);
152
+ adapterResults = adapter.produces.map((signalId) => ({
153
+ signalId,
154
+ status
155
+ }));
114
156
  }
115
- const versionRegistryTopicId = discovery.t_id;
116
- const entries = await this.resolver.listVersionRegisters({
117
- versionRegistryTopicId,
118
- skillUid: params.skillUid,
119
- limit: 250
120
- });
121
- const target = entries.find((entry) => entry.version.trim() === versionRaw);
122
- if (!target) {
123
- return null;
157
+ const emitted = /* @__PURE__ */ new Set();
158
+ const statusCounts = /* @__PURE__ */ new Map();
159
+ const adapterFields = [];
160
+ for (const raw of adapterResults) {
161
+ if (!isValidSignalId(raw.signalId)) {
162
+ continue;
163
+ }
164
+ const result = applyFreshness(raw, options.staleAfterMs, now);
165
+ emitted.add(result.signalId);
166
+ statusCounts.set(
167
+ result.status,
168
+ (statusCounts.get(result.status) ?? 0) + 1
169
+ );
170
+ snapshot[result.signalId] = toSignal(result, now);
171
+ if (result.fields) {
172
+ adapterFields.push(...result.fields);
173
+ }
124
174
  }
125
- const manifestTopicId = getManifestTopicId(target);
126
- const { manifest, sha256Hex } = await this.resolver.resolveManifest({
127
- manifestTopicId
128
- });
129
- await this.resolver.verifyVersionRegisterMatchesManifest({
130
- versionRegister: target,
131
- manifestSha256Hex: sha256Hex
175
+ if (adapterFields.length > 0) {
176
+ current = applyCollectedFields(current, adapterFields);
177
+ }
178
+ results.push({
179
+ adapterId: adapter.id,
180
+ applicable: true,
181
+ signalIds: [...emitted],
182
+ status: runStatus ?? summarizeStatuses(statusCounts),
183
+ error: runError
132
184
  });
133
- let verification;
134
- const provider = this.verificationProvider;
135
- const includeVerification = params.includeVerification === true;
136
- const name = typeof discovery.metadata?.name === "string" ? discovery.metadata.name.trim() : "";
137
- if (includeVerification && provider && name) {
138
- try {
139
- verification = await provider.getSkillVerificationStatus({ name });
140
- } catch (error) {
141
- const detail = error instanceof Error ? error.message : String(error);
142
- this.logger.warn(
143
- `Failed to resolve verification status for skill "${name}": ${detail}`
144
- );
145
- verification = null;
185
+ }
186
+ if (options.staleAfterMs !== void 0) {
187
+ for (const [signalId, signal] of Object.entries(snapshot)) {
188
+ if (signal.status === "ok" && isStale(signal.fetchedAt, options.staleAfterMs, now)) {
189
+ snapshot[signalId] = { ...signal, status: "stale" };
146
190
  }
147
191
  }
148
- return {
149
- directoryTopicId: params.directoryTopicId,
150
- skillUid: params.skillUid,
151
- discovery,
152
- versionRegistryTopicId,
153
- versionEntry: target,
154
- manifest,
155
- manifestSha256Hex: sha256Hex,
156
- ...includeVerification ? { verification } : {}
157
- };
158
192
  }
193
+ return {
194
+ subject: current,
195
+ snapshot,
196
+ results
197
+ };
159
198
  }
160
199
  export {
161
- HCS26BaseClient
200
+ collectHcs25Signals,
201
+ isSignalAdapterApplicable
162
202
  };
163
203
  //# sourceMappingURL=standards-sdk.es125.js.map