@hashgraphonline/standards-sdk 0.1.188 → 0.1.190
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.
- package/dist/browser/hcs-25/adapters/agentverse.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/availability.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/connectivity.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/ethos.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/model-evals.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/simple-evals.d.ts.map +1 -1
- package/dist/browser/hcs-25/adapters/x402.d.ts.map +1 -1
- package/dist/browser/hcs-25/collectors/acp.d.ts +42 -0
- package/dist/browser/hcs-25/collectors/acp.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/agentverse.d.ts +37 -0
- package/dist/browser/hcs-25/collectors/agentverse.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/availability.d.ts +29 -0
- package/dist/browser/hcs-25/collectors/availability.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/catalog.d.ts +57 -0
- package/dist/browser/hcs-25/collectors/catalog.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/connectivity.d.ts +49 -0
- package/dist/browser/hcs-25/collectors/connectivity.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/endpoints.d.ts +9 -0
- package/dist/browser/hcs-25/collectors/endpoints.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/erc8004.d.ts +104 -0
- package/dist/browser/hcs-25/collectors/erc8004.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/ethos.d.ts +95 -0
- package/dist/browser/hcs-25/collectors/ethos.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/freshness.d.ts +36 -0
- package/dist/browser/hcs-25/collectors/freshness.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/http.d.ts +67 -0
- package/dist/browser/hcs-25/collectors/http.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/index.d.ts +21 -0
- package/dist/browser/hcs-25/collectors/index.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/merge.d.ts +11 -0
- package/dist/browser/hcs-25/collectors/merge.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/model-evals.d.ts +315 -0
- package/dist/browser/hcs-25/collectors/model-evals.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/oss-popularity.d.ts +51 -0
- package/dist/browser/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/output-verification.d.ts +37 -0
- package/dist/browser/hcs-25/collectors/output-verification.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/pipeline.d.ts +19 -0
- package/dist/browser/hcs-25/collectors/pipeline.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/runner.d.ts +20 -0
- package/dist/browser/hcs-25/collectors/runner.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/simple-evals.d.ts +91 -0
- package/dist/browser/hcs-25/collectors/simple-evals.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/types.d.ts +113 -0
- package/dist/browser/hcs-25/collectors/types.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/x402-onchain.d.ts +105 -0
- package/dist/browser/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
- package/dist/browser/hcs-25/collectors/x402.d.ts +48 -0
- package/dist/browser/hcs-25/collectors/x402.d.ts.map +1 -0
- package/dist/browser/hcs-25/index.d.ts +1 -0
- package/dist/browser/hcs-25/index.d.ts.map +1 -1
- package/dist/browser/hcs-25/signals/marketplace.d.ts +6 -6
- package/dist/browser/hcs-25/signals/marketplace.d.ts.map +1 -1
- package/dist/browser/hcs-25/signals/model-evals.d.ts +12 -12
- package/dist/browser/hcs-25/signals/model-evals.d.ts.map +1 -1
- package/dist/browser/hcs-25/signals/operational.d.ts +15 -12
- package/dist/browser/hcs-25/signals/operational.d.ts.map +1 -1
- package/dist/browser/hcs-25/signals/simple-evals.d.ts +1 -1
- package/dist/browser/hcs-25/signals/simple-evals.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/client/agent-network.d.ts +210 -66
- package/dist/browser/services/registry-broker/client/agent-network.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/client.d.ts +1 -1
- package/dist/browser/services/registry-broker/client.d.ts.map +1 -1
- package/dist/browser/standards-sdk.browser.js +37 -10
- package/dist/browser/standards-sdk.browser.js.map +1 -1
- package/dist/browser-root/hcs-25/adapters/agentverse.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/availability.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/connectivity.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/ethos.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/model-evals.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/simple-evals.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/adapters/x402.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/collectors/acp.d.ts +42 -0
- package/dist/browser-root/hcs-25/collectors/acp.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/agentverse.d.ts +37 -0
- package/dist/browser-root/hcs-25/collectors/agentverse.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/availability.d.ts +29 -0
- package/dist/browser-root/hcs-25/collectors/availability.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/catalog.d.ts +57 -0
- package/dist/browser-root/hcs-25/collectors/catalog.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/connectivity.d.ts +49 -0
- package/dist/browser-root/hcs-25/collectors/connectivity.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/endpoints.d.ts +9 -0
- package/dist/browser-root/hcs-25/collectors/endpoints.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/erc8004.d.ts +104 -0
- package/dist/browser-root/hcs-25/collectors/erc8004.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/ethos.d.ts +95 -0
- package/dist/browser-root/hcs-25/collectors/ethos.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/freshness.d.ts +36 -0
- package/dist/browser-root/hcs-25/collectors/freshness.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/http.d.ts +67 -0
- package/dist/browser-root/hcs-25/collectors/http.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/index.d.ts +21 -0
- package/dist/browser-root/hcs-25/collectors/index.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/merge.d.ts +11 -0
- package/dist/browser-root/hcs-25/collectors/merge.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/model-evals.d.ts +315 -0
- package/dist/browser-root/hcs-25/collectors/model-evals.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/oss-popularity.d.ts +51 -0
- package/dist/browser-root/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/output-verification.d.ts +37 -0
- package/dist/browser-root/hcs-25/collectors/output-verification.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/pipeline.d.ts +19 -0
- package/dist/browser-root/hcs-25/collectors/pipeline.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/runner.d.ts +20 -0
- package/dist/browser-root/hcs-25/collectors/runner.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/simple-evals.d.ts +91 -0
- package/dist/browser-root/hcs-25/collectors/simple-evals.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/types.d.ts +113 -0
- package/dist/browser-root/hcs-25/collectors/types.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/x402-onchain.d.ts +105 -0
- package/dist/browser-root/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/collectors/x402.d.ts +48 -0
- package/dist/browser-root/hcs-25/collectors/x402.d.ts.map +1 -0
- package/dist/browser-root/hcs-25/index.d.ts +1 -0
- package/dist/browser-root/hcs-25/index.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/signals/marketplace.d.ts +6 -6
- package/dist/browser-root/hcs-25/signals/marketplace.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/signals/model-evals.d.ts +12 -12
- package/dist/browser-root/hcs-25/signals/model-evals.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/signals/operational.d.ts +15 -12
- package/dist/browser-root/hcs-25/signals/operational.d.ts.map +1 -1
- package/dist/browser-root/hcs-25/signals/simple-evals.d.ts +1 -1
- package/dist/browser-root/hcs-25/signals/simple-evals.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/client/agent-network.d.ts +210 -66
- package/dist/browser-root/services/registry-broker/client/agent-network.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/client.d.ts +1 -1
- package/dist/browser-root/services/registry-broker/client.d.ts.map +1 -1
- package/dist/browser-root/standards-sdk.root-browser.js +78 -11
- package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
- package/dist/cjs/hcs-25/adapters/agentverse.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/availability.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/connectivity.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/ethos.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/model-evals.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/simple-evals.d.ts.map +1 -1
- package/dist/cjs/hcs-25/adapters/x402.d.ts.map +1 -1
- package/dist/cjs/hcs-25/collectors/acp.d.ts +42 -0
- package/dist/cjs/hcs-25/collectors/acp.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/agentverse.d.ts +37 -0
- package/dist/cjs/hcs-25/collectors/agentverse.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/availability.d.ts +29 -0
- package/dist/cjs/hcs-25/collectors/availability.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/catalog.d.ts +57 -0
- package/dist/cjs/hcs-25/collectors/catalog.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/connectivity.d.ts +49 -0
- package/dist/cjs/hcs-25/collectors/connectivity.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/endpoints.d.ts +9 -0
- package/dist/cjs/hcs-25/collectors/endpoints.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/erc8004.d.ts +104 -0
- package/dist/cjs/hcs-25/collectors/erc8004.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/ethos.d.ts +95 -0
- package/dist/cjs/hcs-25/collectors/ethos.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/freshness.d.ts +36 -0
- package/dist/cjs/hcs-25/collectors/freshness.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/http.d.ts +67 -0
- package/dist/cjs/hcs-25/collectors/http.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/index.d.ts +21 -0
- package/dist/cjs/hcs-25/collectors/index.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/merge.d.ts +11 -0
- package/dist/cjs/hcs-25/collectors/merge.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/model-evals.d.ts +315 -0
- package/dist/cjs/hcs-25/collectors/model-evals.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/oss-popularity.d.ts +51 -0
- package/dist/cjs/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/output-verification.d.ts +37 -0
- package/dist/cjs/hcs-25/collectors/output-verification.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/pipeline.d.ts +19 -0
- package/dist/cjs/hcs-25/collectors/pipeline.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/runner.d.ts +20 -0
- package/dist/cjs/hcs-25/collectors/runner.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/simple-evals.d.ts +91 -0
- package/dist/cjs/hcs-25/collectors/simple-evals.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/types.d.ts +113 -0
- package/dist/cjs/hcs-25/collectors/types.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/x402-onchain.d.ts +105 -0
- package/dist/cjs/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
- package/dist/cjs/hcs-25/collectors/x402.d.ts +48 -0
- package/dist/cjs/hcs-25/collectors/x402.d.ts.map +1 -0
- package/dist/cjs/hcs-25/index.d.ts +1 -0
- package/dist/cjs/hcs-25/index.d.ts.map +1 -1
- package/dist/cjs/hcs-25/signals/marketplace.d.ts +6 -6
- package/dist/cjs/hcs-25/signals/marketplace.d.ts.map +1 -1
- package/dist/cjs/hcs-25/signals/model-evals.d.ts +12 -12
- package/dist/cjs/hcs-25/signals/model-evals.d.ts.map +1 -1
- package/dist/cjs/hcs-25/signals/operational.d.ts +15 -12
- package/dist/cjs/hcs-25/signals/operational.d.ts.map +1 -1
- package/dist/cjs/hcs-25/signals/simple-evals.d.ts +1 -1
- package/dist/cjs/hcs-25/signals/simple-evals.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client/agent-network.d.ts +210 -66
- package/dist/cjs/services/registry-broker/client/agent-network.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client.d.ts +1 -1
- package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +2 -2
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/es/hcs-25/adapters/agentverse.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/availability.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/connectivity.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/ethos.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/model-evals.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/simple-evals.d.ts.map +1 -1
- package/dist/es/hcs-25/adapters/x402.d.ts.map +1 -1
- package/dist/es/hcs-25/collectors/acp.d.ts +42 -0
- package/dist/es/hcs-25/collectors/acp.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/agentverse.d.ts +37 -0
- package/dist/es/hcs-25/collectors/agentverse.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/availability.d.ts +29 -0
- package/dist/es/hcs-25/collectors/availability.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/catalog.d.ts +57 -0
- package/dist/es/hcs-25/collectors/catalog.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/connectivity.d.ts +49 -0
- package/dist/es/hcs-25/collectors/connectivity.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/endpoints.d.ts +9 -0
- package/dist/es/hcs-25/collectors/endpoints.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/erc8004.d.ts +104 -0
- package/dist/es/hcs-25/collectors/erc8004.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/ethos.d.ts +95 -0
- package/dist/es/hcs-25/collectors/ethos.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/freshness.d.ts +36 -0
- package/dist/es/hcs-25/collectors/freshness.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/http.d.ts +67 -0
- package/dist/es/hcs-25/collectors/http.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/index.d.ts +21 -0
- package/dist/es/hcs-25/collectors/index.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/merge.d.ts +11 -0
- package/dist/es/hcs-25/collectors/merge.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/model-evals.d.ts +315 -0
- package/dist/es/hcs-25/collectors/model-evals.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/oss-popularity.d.ts +51 -0
- package/dist/es/hcs-25/collectors/oss-popularity.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/output-verification.d.ts +37 -0
- package/dist/es/hcs-25/collectors/output-verification.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/pipeline.d.ts +19 -0
- package/dist/es/hcs-25/collectors/pipeline.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/runner.d.ts +20 -0
- package/dist/es/hcs-25/collectors/runner.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/simple-evals.d.ts +91 -0
- package/dist/es/hcs-25/collectors/simple-evals.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/types.d.ts +113 -0
- package/dist/es/hcs-25/collectors/types.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/x402-onchain.d.ts +105 -0
- package/dist/es/hcs-25/collectors/x402-onchain.d.ts.map +1 -0
- package/dist/es/hcs-25/collectors/x402.d.ts +48 -0
- package/dist/es/hcs-25/collectors/x402.d.ts.map +1 -0
- package/dist/es/hcs-25/index.d.ts +1 -0
- package/dist/es/hcs-25/index.d.ts.map +1 -1
- package/dist/es/hcs-25/signals/marketplace.d.ts +6 -6
- package/dist/es/hcs-25/signals/marketplace.d.ts.map +1 -1
- package/dist/es/hcs-25/signals/model-evals.d.ts +12 -12
- package/dist/es/hcs-25/signals/model-evals.d.ts.map +1 -1
- package/dist/es/hcs-25/signals/operational.d.ts +15 -12
- package/dist/es/hcs-25/signals/operational.d.ts.map +1 -1
- package/dist/es/hcs-25/signals/simple-evals.d.ts +1 -1
- package/dist/es/hcs-25/signals/simple-evals.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client/agent-network.d.ts +210 -66
- package/dist/es/services/registry-broker/client/agent-network.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client.d.ts +1 -1
- package/dist/es/services/registry-broker/client.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +141 -58
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +2 -2
- package/dist/es/standards-sdk.es103.js +2 -2
- package/dist/es/standards-sdk.es104.js +1 -1
- package/dist/es/standards-sdk.es106.js +1 -1
- package/dist/es/standards-sdk.es108.js +2 -2
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es110.js +1 -1
- package/dist/es/standards-sdk.es111.js +2 -2
- package/dist/es/standards-sdk.es115.js +3 -3
- package/dist/es/standards-sdk.es116.js +4 -4
- package/dist/es/standards-sdk.es12.js +1 -1
- package/dist/es/standards-sdk.es120.js +4 -4
- package/dist/es/standards-sdk.es121.js +11 -11
- package/dist/es/standards-sdk.es122.js +176 -240
- package/dist/es/standards-sdk.es122.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +41 -468
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +28 -103
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es125.js +185 -145
- package/dist/es/standards-sdk.es125.js.map +1 -1
- package/dist/es/standards-sdk.es126.js +13 -33
- package/dist/es/standards-sdk.es126.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +44 -10
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +150 -172
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +166 -26
- package/dist/es/standards-sdk.es129.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +1 -1
- package/dist/es/standards-sdk.es130.js +375 -18
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +371 -139
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +211 -180
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +210 -770
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +376 -10
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +118 -564
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +233 -608
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +1328 -12
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +133 -2
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +258 -74
- package/dist/es/standards-sdk.es139.js.map +1 -1
- package/dist/es/standards-sdk.es14.js +1 -1
- package/dist/es/standards-sdk.es140.js +104 -38
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +252 -2
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +446 -203
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +104 -1139
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +144 -290
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +31 -419
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +10 -353
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +144 -1084
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +25 -204
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +17 -1562
- package/dist/es/standards-sdk.es149.js.map +1 -1
- package/dist/es/standards-sdk.es15.js +1 -1
- package/dist/es/standards-sdk.es150.js +128 -1134
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es151.js +199 -14
- package/dist/es/standards-sdk.es151.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +774 -367
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +10 -256
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +567 -4
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +619 -74
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +12 -86
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +2 -60
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +87 -2547
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +36 -155
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +6 -6
- package/dist/es/standards-sdk.es160.js +2 -7
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +223 -74
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +1122 -47
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +299 -187
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +419 -23
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +352 -55
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +1113 -86
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +200 -41
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +1551 -188
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +1161 -51
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +15 -47
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +445 -50
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +255 -45
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +4 -122
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +77 -50
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +85 -42
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +60 -72
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +2544 -65
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +159 -44
- package/dist/es/standards-sdk.es178.js.map +1 -1
- package/dist/es/standards-sdk.es179.js +7 -36
- package/dist/es/standards-sdk.es179.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +13 -13
- package/dist/es/standards-sdk.es180.js +86 -30
- package/dist/es/standards-sdk.es180.js.map +1 -1
- package/dist/es/standards-sdk.es181.js +65 -34
- package/dist/es/standards-sdk.es181.js.map +1 -1
- package/dist/es/standards-sdk.es182.js +196 -48
- package/dist/es/standards-sdk.es182.js.map +1 -1
- package/dist/es/standards-sdk.es183.js +23 -135
- package/dist/es/standards-sdk.es183.js.map +1 -1
- package/dist/es/standards-sdk.es184.js +54 -38
- package/dist/es/standards-sdk.es184.js.map +1 -1
- package/dist/es/standards-sdk.es185.js +102 -12470
- package/dist/es/standards-sdk.es185.js.map +1 -1
- package/dist/es/standards-sdk.es186.js +53 -52
- package/dist/es/standards-sdk.es186.js.map +1 -1
- package/dist/es/standards-sdk.es187.js +223 -103
- package/dist/es/standards-sdk.es187.js.map +1 -1
- package/dist/es/standards-sdk.es188.js +66 -75
- package/dist/es/standards-sdk.es188.js.map +1 -1
- package/dist/es/standards-sdk.es189.js +46 -197
- package/dist/es/standards-sdk.es189.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +10 -10
- package/dist/es/standards-sdk.es190.js +60 -15
- package/dist/es/standards-sdk.es190.js.map +1 -1
- package/dist/es/standards-sdk.es191.js +47 -670
- package/dist/es/standards-sdk.es191.js.map +1 -1
- package/dist/es/standards-sdk.es192.js +112 -162
- package/dist/es/standards-sdk.es192.js.map +1 -1
- package/dist/es/standards-sdk.es193.js +53 -318
- package/dist/es/standards-sdk.es193.js.map +1 -1
- package/dist/es/standards-sdk.es194.js +54 -341
- package/dist/es/standards-sdk.es194.js.map +1 -1
- package/dist/es/standards-sdk.es195.js +72 -453
- package/dist/es/standards-sdk.es195.js.map +1 -1
- package/dist/es/standards-sdk.es196.js +75 -331
- package/dist/es/standards-sdk.es196.js.map +1 -1
- package/dist/es/standards-sdk.es197.js +44 -76
- package/dist/es/standards-sdk.es197.js.map +1 -1
- package/dist/es/standards-sdk.es198.js +30 -67
- package/dist/es/standards-sdk.es198.js.map +1 -1
- package/dist/es/standards-sdk.es199.js +30 -139
- package/dist/es/standards-sdk.es199.js.map +1 -1
- package/dist/es/standards-sdk.es2.js +2 -2
- package/dist/es/standards-sdk.es20.js +1 -1
- package/dist/es/standards-sdk.es200.js +34 -517
- package/dist/es/standards-sdk.es200.js.map +1 -1
- package/dist/es/standards-sdk.es201.js +48 -259
- package/dist/es/standards-sdk.es201.js.map +1 -1
- package/dist/es/standards-sdk.es202.js +127 -185
- package/dist/es/standards-sdk.es202.js.map +1 -1
- package/dist/es/standards-sdk.es203.js +36 -113
- package/dist/es/standards-sdk.es203.js.map +1 -1
- package/dist/es/standards-sdk.es204.js +12464 -134
- package/dist/es/standards-sdk.es204.js.map +1 -1
- package/dist/es/standards-sdk.es205.js +14 -181
- package/dist/es/standards-sdk.es205.js.map +1 -1
- package/dist/es/standards-sdk.es206.js +55 -683
- package/dist/es/standards-sdk.es206.js.map +1 -1
- package/dist/es/standards-sdk.es207.js +93 -167
- package/dist/es/standards-sdk.es207.js.map +1 -1
- package/dist/es/standards-sdk.es208.js +71 -225
- package/dist/es/standards-sdk.es208.js.map +1 -1
- package/dist/es/standards-sdk.es209.js +176 -215
- package/dist/es/standards-sdk.es209.js.map +1 -1
- package/dist/es/standards-sdk.es21.js +1 -1
- package/dist/es/standards-sdk.es210.js +675 -0
- package/dist/es/standards-sdk.es210.js.map +1 -0
- package/dist/es/standards-sdk.es211.js +76 -0
- package/dist/es/standards-sdk.es211.js.map +1 -0
- package/dist/es/standards-sdk.es212.js +175 -0
- package/dist/es/standards-sdk.es212.js.map +1 -0
- package/dist/es/standards-sdk.es213.js +325 -0
- package/dist/es/standards-sdk.es213.js.map +1 -0
- package/dist/es/standards-sdk.es214.js +349 -0
- package/dist/es/standards-sdk.es214.js.map +1 -0
- package/dist/es/standards-sdk.es215.js +456 -0
- package/dist/es/standards-sdk.es215.js.map +1 -0
- package/dist/es/standards-sdk.es216.js +334 -0
- package/dist/es/standards-sdk.es216.js.map +1 -0
- package/dist/es/standards-sdk.es217.js +79 -0
- package/dist/es/standards-sdk.es217.js.map +1 -0
- package/dist/es/standards-sdk.es218.js +142 -0
- package/dist/es/standards-sdk.es218.js.map +1 -0
- package/dist/es/standards-sdk.es219.js +520 -0
- package/dist/es/standards-sdk.es219.js.map +1 -0
- package/dist/es/standards-sdk.es22.js +1 -1
- package/dist/es/standards-sdk.es220.js +262 -0
- package/dist/es/standards-sdk.es220.js.map +1 -0
- package/dist/es/standards-sdk.es221.js +199 -0
- package/dist/es/standards-sdk.es221.js.map +1 -0
- package/dist/es/standards-sdk.es222.js +122 -0
- package/dist/es/standards-sdk.es222.js.map +1 -0
- package/dist/es/standards-sdk.es223.js +155 -0
- package/dist/es/standards-sdk.es223.js.map +1 -0
- package/dist/es/standards-sdk.es224.js +187 -0
- package/dist/es/standards-sdk.es224.js.map +1 -0
- package/dist/es/standards-sdk.es225.js +687 -0
- package/dist/es/standards-sdk.es225.js.map +1 -0
- package/dist/es/standards-sdk.es226.js +188 -0
- package/dist/es/standards-sdk.es226.js.map +1 -0
- package/dist/es/standards-sdk.es227.js +238 -0
- package/dist/es/standards-sdk.es227.js.map +1 -0
- package/dist/es/standards-sdk.es228.js +242 -0
- package/dist/es/standards-sdk.es228.js.map +1 -0
- package/dist/es/standards-sdk.es23.js +1 -1
- package/dist/es/standards-sdk.es24.js +1 -1
- package/dist/es/standards-sdk.es25.js +1 -1
- package/dist/es/standards-sdk.es26.js +1 -1
- package/dist/es/standards-sdk.es27.js +13 -13
- package/dist/es/standards-sdk.es30.js +2 -2
- package/dist/es/standards-sdk.es31.js +4 -4
- package/dist/es/standards-sdk.es32.js +1 -1
- package/dist/es/standards-sdk.es35.js +7 -7
- package/dist/es/standards-sdk.es36.js +4 -4
- package/dist/es/standards-sdk.es37.js +2 -2
- package/dist/es/standards-sdk.es38.js +2 -2
- package/dist/es/standards-sdk.es39.js +1 -1
- package/dist/es/standards-sdk.es4.js +2 -2
- package/dist/es/standards-sdk.es40.js +1 -1
- package/dist/es/standards-sdk.es41.js +2 -2
- package/dist/es/standards-sdk.es46.js +1 -1
- package/dist/es/standards-sdk.es5.js +2 -2
- package/dist/es/standards-sdk.es51.js +1 -1
- package/dist/es/standards-sdk.es53.js +1 -1
- package/dist/es/standards-sdk.es56.js +2 -2
- package/dist/es/standards-sdk.es59.js +1 -1
- package/dist/es/standards-sdk.es6.js +2 -2
- package/dist/es/standards-sdk.es60.js +1 -1
- package/dist/es/standards-sdk.es62.js +1 -1
- package/dist/es/standards-sdk.es63.js +2 -2
- package/dist/es/standards-sdk.es64.js +1 -1
- package/dist/es/standards-sdk.es65.js +1 -1
- package/dist/es/standards-sdk.es66.js +1 -1
- package/dist/es/standards-sdk.es67.js +8 -8
- package/dist/es/standards-sdk.es69.js +1 -1
- package/dist/es/standards-sdk.es7.js +1 -1
- package/dist/es/standards-sdk.es71.js +2 -2
- package/dist/es/standards-sdk.es72.js +3 -3
- package/dist/es/standards-sdk.es75.js +5 -5
- package/dist/es/standards-sdk.es76.js +3 -3
- package/dist/es/standards-sdk.es77.js +2 -2
- package/dist/es/standards-sdk.es78.js +1 -1
- package/dist/es/standards-sdk.es81.js +2 -2
- package/dist/es/standards-sdk.es83.js +2 -2
- package/dist/es/standards-sdk.es84.js +5 -5
- package/dist/es/standards-sdk.es85.js +1 -1
- package/dist/es/standards-sdk.es88.js +1 -1
- package/dist/es/standards-sdk.es89.js +2 -2
- package/dist/es/standards-sdk.es9.js +2 -2
- package/dist/es/standards-sdk.es90.js +4 -4
- package/dist/es/standards-sdk.es94.js +3 -3
- package/dist/es/standards-sdk.es96.js +2 -2
- package/dist/es/standards-sdk.es98.js +1 -1
- package/dist/es/standards-sdk.es99.js +3 -3
- package/package.json +1 -1
|
@@ -1,205 +1,236 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import "
|
|
5
|
-
import "
|
|
6
|
-
import "
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
constructor(logLevel = "info") {
|
|
12
|
-
this.defaultEndpoint = "https://kiloscribe.com/api/inscription-cdn";
|
|
13
|
-
this.logger = Logger.getInstance({
|
|
14
|
-
level: logLevel,
|
|
15
|
-
module: "HRLResolver"
|
|
16
|
-
});
|
|
1
|
+
import { readString } from "./standards-sdk.es198.js";
|
|
2
|
+
import "./standards-sdk.es182.js";
|
|
3
|
+
import "./standards-sdk.es195.js";
|
|
4
|
+
import "./standards-sdk.es196.js";
|
|
5
|
+
import "./standards-sdk.es197.js";
|
|
6
|
+
import { requestJson, Hcs25CollectorHttpError, isTimeoutError } from "./standards-sdk.es122.js";
|
|
7
|
+
const parsePositiveInt = (value) => {
|
|
8
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
9
|
+
const normalized = Math.floor(value);
|
|
10
|
+
return normalized > 0 ? normalized : null;
|
|
17
11
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
isBinaryContentType(mimeType) {
|
|
22
|
-
const binaryTypes = [
|
|
23
|
-
"image/",
|
|
24
|
-
"audio/",
|
|
25
|
-
"video/",
|
|
26
|
-
"application/octet-stream",
|
|
27
|
-
"application/pdf",
|
|
28
|
-
"application/zip",
|
|
29
|
-
"application/gzip",
|
|
30
|
-
"application/x-binary",
|
|
31
|
-
"application/vnd.ms-",
|
|
32
|
-
"application/x-msdownload",
|
|
33
|
-
"application/x-shockwave-flash",
|
|
34
|
-
"font/",
|
|
35
|
-
"application/wasm"
|
|
36
|
-
];
|
|
37
|
-
return binaryTypes.some((prefix) => mimeType.startsWith(prefix));
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Parses an HRL string into its components
|
|
41
|
-
*/
|
|
42
|
-
parseHRL(hrl) {
|
|
43
|
-
if (!hrl) {
|
|
12
|
+
if (typeof value === "string") {
|
|
13
|
+
const trimmed = value.trim();
|
|
14
|
+
if (!trimmed) {
|
|
44
15
|
return null;
|
|
45
16
|
}
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
17
|
+
const parsed = Number.parseInt(trimmed, 10);
|
|
18
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
};
|
|
22
|
+
const parseNonNegativeInt = (value) => {
|
|
23
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
24
|
+
const normalized = Math.floor(value);
|
|
25
|
+
return normalized >= 0 ? normalized : null;
|
|
26
|
+
}
|
|
27
|
+
if (typeof value === "string") {
|
|
28
|
+
const trimmed = value.trim();
|
|
29
|
+
if (!trimmed) {
|
|
49
30
|
return null;
|
|
50
31
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
topicId: match[2]
|
|
54
|
-
};
|
|
32
|
+
const parsed = Number.parseInt(trimmed, 10);
|
|
33
|
+
return Number.isFinite(parsed) && parsed >= 0 ? parsed : null;
|
|
55
34
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
const parsed = this.parseHRL(hrl);
|
|
64
|
-
if (!parsed) {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
|
68
|
-
if (!topicIdPattern.test(parsed.topicId)) {
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
return true;
|
|
35
|
+
return null;
|
|
36
|
+
};
|
|
37
|
+
const parseChainIdFromNetworkKey = (networkKey) => {
|
|
38
|
+
if (typeof networkKey !== "string") {
|
|
39
|
+
return null;
|
|
72
40
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
isValidTopicId(topicId) {
|
|
77
|
-
const topicIdPattern = /^[0-9]+\.[0-9]+\.[0-9]+$/;
|
|
78
|
-
return topicIdPattern.test(topicId);
|
|
41
|
+
const trimmed = networkKey.trim();
|
|
42
|
+
if (!trimmed) {
|
|
43
|
+
return null;
|
|
79
44
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
if (hcsMatch && hcsMatch[1]) {
|
|
99
|
-
standard = hcsMatch[1];
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
const hrl = `hcs://${standard}/${hrlOrTopicId}`;
|
|
103
|
-
return this.resolveHRL(hrl, options);
|
|
104
|
-
} catch (error) {
|
|
105
|
-
this.logger.error(
|
|
106
|
-
`Failed to get topic info for ${hrlOrTopicId}: ${error.message}`
|
|
107
|
-
);
|
|
108
|
-
const hrl = `hcs://1/${hrlOrTopicId}`;
|
|
109
|
-
return this.resolveHRL(hrl, options);
|
|
110
|
-
}
|
|
45
|
+
const match = /^eip155:(\d+)(?::|$)/i.exec(trimmed);
|
|
46
|
+
if (!match) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const parsed = Number.parseInt(match[1], 10);
|
|
50
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : null;
|
|
51
|
+
};
|
|
52
|
+
const parseIdParts = (value) => {
|
|
53
|
+
if (typeof value !== "string") {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
const trimmed = value.trim();
|
|
57
|
+
if (!trimmed) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
const separator = trimmed.indexOf(":");
|
|
61
|
+
if (separator <= 0 || separator !== trimmed.lastIndexOf(":")) {
|
|
62
|
+
return null;
|
|
111
63
|
}
|
|
112
|
-
|
|
113
|
-
|
|
64
|
+
const chainId = Number.parseInt(trimmed.slice(0, separator), 10);
|
|
65
|
+
const agentId = trimmed.slice(separator + 1);
|
|
66
|
+
if (!Number.isFinite(chainId) || chainId <= 0 || !agentId) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
return { chainId, agentId };
|
|
70
|
+
};
|
|
71
|
+
function parseErc8004NativeId(subject) {
|
|
72
|
+
const metadata = subject.metadata ?? {};
|
|
73
|
+
const idParts = parseIdParts(readString(metadata, "originalId")) ?? parseIdParts(readString(metadata, "nativeId")) ?? parseIdParts(readString(metadata, "uid"));
|
|
74
|
+
const agentId = parseNonNegativeInt(metadata["agentId"]) ?? (idParts ? parseNonNegativeInt(idParts.agentId) : null);
|
|
75
|
+
const chainId = parsePositiveInt(metadata["chainId"]) ?? parseChainIdFromNetworkKey(metadata["networkKey"]) ?? idParts?.chainId ?? null;
|
|
76
|
+
if (agentId === null || chainId === null) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return { chainId, agentId: String(agentId) };
|
|
80
|
+
}
|
|
81
|
+
function createHttpErc8004FeedbackSource(options) {
|
|
82
|
+
return {
|
|
83
|
+
async getFeedbackSummary(subject, context) {
|
|
84
|
+
const nativeId = parseErc8004NativeId(subject);
|
|
85
|
+
if (!nativeId) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const url = typeof options.endpoint === "function" ? options.endpoint(subject) : options.endpoint.replace("{nativeId}", `${nativeId.chainId}:${nativeId.agentId}`).replace("{chainId}", String(nativeId.chainId)).replace("{agentId}", nativeId.agentId);
|
|
89
|
+
if (!url) {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
const data = await requestJson(url, {
|
|
93
|
+
fetch: context.fetch,
|
|
94
|
+
timeoutMs: context.timeoutMs,
|
|
95
|
+
signal: context.signal
|
|
96
|
+
});
|
|
97
|
+
const summary = data.summary ?? data;
|
|
98
|
+
const averageScore = typeof summary.averageScore === "number" ? summary.averageScore : null;
|
|
99
|
+
const totalFeedbacks = typeof summary.totalFeedbacks === "number" ? summary.totalFeedbacks : typeof data.count === "number" ? data.count : null;
|
|
100
|
+
if (averageScore === null && totalFeedbacks === null) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
114
103
|
return {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
104
|
+
averageScore: averageScore ?? 0,
|
|
105
|
+
totalFeedbacks: totalFeedbacks ?? 0,
|
|
106
|
+
registry: summary.registry ?? "erc-8004",
|
|
107
|
+
network: summary.network ?? String(nativeId.chainId),
|
|
108
|
+
updatedAt: summary.updatedAt
|
|
118
109
|
};
|
|
119
110
|
}
|
|
120
|
-
|
|
121
|
-
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
const ERC8004_REPUTATION_ABI = [
|
|
114
|
+
"function getClients(uint256 agentId) view returns (address[])",
|
|
115
|
+
"function getSummary(uint256 agentId, address[] clientAddresses, string tag1, string tag2) view returns (uint64 count, int128 summaryValue, uint8 summaryValueDecimals)"
|
|
116
|
+
];
|
|
117
|
+
function createOnchainErc8004FeedbackSource(options) {
|
|
118
|
+
const scoreScale = options.scoreScale ?? "auto";
|
|
119
|
+
return {
|
|
120
|
+
async getFeedbackSummary(subject) {
|
|
121
|
+
const nativeId = parseErc8004NativeId(subject);
|
|
122
|
+
if (!nativeId) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
const registry = options.registries[nativeId.chainId];
|
|
126
|
+
if (!registry) {
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
const contract = options.contractFor(nativeId.chainId, registry);
|
|
130
|
+
const agentId = BigInt(nativeId.agentId);
|
|
131
|
+
const clients = await contract.getClients(agentId);
|
|
132
|
+
if (clients.length === 0) {
|
|
133
|
+
return {
|
|
134
|
+
averageScore: 0,
|
|
135
|
+
totalFeedbacks: 0,
|
|
136
|
+
network: String(nativeId.chainId)
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
const [count, summaryValue, decimals] = await contract.getSummary(
|
|
140
|
+
agentId,
|
|
141
|
+
[...clients],
|
|
142
|
+
options.tag1 ?? "",
|
|
143
|
+
options.tag2 ?? ""
|
|
144
|
+
);
|
|
145
|
+
const raw = Number(summaryValue) / 10 ** Number(decimals);
|
|
146
|
+
const averageScore = scoreScale === "ratio5" ? raw * 20 : scoreScale === "percent" ? raw : raw <= 5 ? raw * 20 : raw;
|
|
122
147
|
return {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
148
|
+
averageScore: Math.min(100, Math.max(0, averageScore)),
|
|
149
|
+
totalFeedbacks: Number(count),
|
|
150
|
+
network: String(nativeId.chainId)
|
|
126
151
|
};
|
|
127
|
-
} catch (e) {
|
|
128
|
-
const error = e;
|
|
129
|
-
const logMessage = `Error resolving HRL for content and type: ${error.message}`;
|
|
130
|
-
this.logger.error(logMessage);
|
|
131
|
-
throw new Error(logMessage);
|
|
132
152
|
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
const DEFAULT_INCLUDED_REGISTRIES = ["erc-8004"];
|
|
156
|
+
function statusFromError(error) {
|
|
157
|
+
return isTimeoutError(error) ? "timeout" : "error";
|
|
158
|
+
}
|
|
159
|
+
function createErc8004SignalAdapter(options) {
|
|
160
|
+
const collect = async (subject, context) => {
|
|
161
|
+
const now = context.now.toISOString();
|
|
162
|
+
const nativeId = parseErc8004NativeId(subject);
|
|
163
|
+
if (!nativeId) {
|
|
164
|
+
return [{ signalId: "erc8004.feedback", status: "missing" }];
|
|
141
165
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;
|
|
149
|
-
this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);
|
|
150
|
-
const headResponse = await axios.head(cdnUrl);
|
|
151
|
-
const contentType = headResponse.headers["content-type"] || "";
|
|
152
|
-
const isBinary = this.isBinaryContentType(contentType);
|
|
153
|
-
if (isBinary || options.returnRaw) {
|
|
154
|
-
const response2 = await axios.get(cdnUrl, {
|
|
155
|
-
responseType: "arraybuffer"
|
|
156
|
-
});
|
|
157
|
-
return {
|
|
158
|
-
content: response2.data,
|
|
159
|
-
contentType,
|
|
160
|
-
topicId,
|
|
161
|
-
isBinary: true
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
if (contentType === "application/json") {
|
|
165
|
-
const response2 = await axios.get(cdnUrl, {
|
|
166
|
-
responseType: "json"
|
|
167
|
-
});
|
|
168
|
-
if (!response2.data) {
|
|
169
|
-
throw new Error(`Failed to fetch content from topic: ${topicId}`);
|
|
166
|
+
let lastError = null;
|
|
167
|
+
for (const source of options.sources) {
|
|
168
|
+
try {
|
|
169
|
+
const summary = await source.getFeedbackSummary(subject, context);
|
|
170
|
+
if (!summary) {
|
|
171
|
+
continue;
|
|
170
172
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
const averageScore = Math.min(
|
|
174
|
+
100,
|
|
175
|
+
Math.max(0, Number(summary.averageScore) || 0)
|
|
176
|
+
);
|
|
177
|
+
const totalFeedbacks = Math.max(
|
|
178
|
+
0,
|
|
179
|
+
Math.floor(Number(summary.totalFeedbacks) || 0)
|
|
180
|
+
);
|
|
181
|
+
const record = {
|
|
182
|
+
averageScore,
|
|
183
|
+
totalFeedbacks,
|
|
184
|
+
registry: summary.registry ?? subject.registry ?? "erc-8004",
|
|
185
|
+
network: summary.network ?? String(nativeId.chainId),
|
|
186
|
+
updatedAt: summary.updatedAt ?? now
|
|
176
187
|
};
|
|
188
|
+
return [
|
|
189
|
+
{
|
|
190
|
+
signalId: "erc8004.feedback",
|
|
191
|
+
status: "ok",
|
|
192
|
+
value: averageScore,
|
|
193
|
+
fields: [{ scope: "erc8004FeedbackSummary", values: record }],
|
|
194
|
+
provenance: {
|
|
195
|
+
source: "erc8004",
|
|
196
|
+
subjectId: `${nativeId.chainId}:${nativeId.agentId}`,
|
|
197
|
+
fetchedAt: now
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
];
|
|
201
|
+
} catch (error) {
|
|
202
|
+
lastError = error;
|
|
203
|
+
continue;
|
|
177
204
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
let content;
|
|
183
|
-
if (typeof response.data === "object") {
|
|
184
|
-
content = response.data.content || response.data.text || JSON.stringify(response.data);
|
|
185
|
-
} else {
|
|
186
|
-
content = response.data;
|
|
205
|
+
}
|
|
206
|
+
if (lastError) {
|
|
207
|
+
if (lastError instanceof Hcs25CollectorHttpError && lastError.status === 404) {
|
|
208
|
+
return [{ signalId: "erc8004.feedback", status: "missing" }];
|
|
187
209
|
}
|
|
188
|
-
return
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
} catch (e) {
|
|
195
|
-
const error = e;
|
|
196
|
-
const logMessage = `Error resolving HRL reference: ${error.message}`;
|
|
197
|
-
this.logger.error(logMessage);
|
|
198
|
-
throw new Error(logMessage);
|
|
210
|
+
return [
|
|
211
|
+
{
|
|
212
|
+
signalId: "erc8004.feedback",
|
|
213
|
+
status: statusFromError(lastError)
|
|
214
|
+
}
|
|
215
|
+
];
|
|
199
216
|
}
|
|
200
|
-
|
|
217
|
+
return [{ signalId: "erc8004.feedback", status: "missing" }];
|
|
218
|
+
};
|
|
219
|
+
return {
|
|
220
|
+
id: "erc8004-feedback",
|
|
221
|
+
produces: ["erc8004.feedback"],
|
|
222
|
+
timeoutMs: options.timeoutMs,
|
|
223
|
+
includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,
|
|
224
|
+
excludeRegistries: options.excludeRegistries,
|
|
225
|
+
appliesTo: options.appliesTo,
|
|
226
|
+
collect
|
|
227
|
+
};
|
|
201
228
|
}
|
|
202
229
|
export {
|
|
203
|
-
|
|
230
|
+
ERC8004_REPUTATION_ABI,
|
|
231
|
+
createErc8004SignalAdapter,
|
|
232
|
+
createHttpErc8004FeedbackSource,
|
|
233
|
+
createOnchainErc8004FeedbackSource,
|
|
234
|
+
parseErc8004NativeId
|
|
204
235
|
};
|
|
205
236
|
//# sourceMappingURL=standards-sdk.es132.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es132.js","sources":["../../src/utils/hrl-resolver.ts"],"sourcesContent":["import axios from 'axios';\nimport { Logger, LogLevel, ILogger } from './logger';\nimport { NetworkType } from './types';\nimport { HederaMirrorNode } from '../services';\n\n/**\n * Options for HRL resolution\n */\nexport interface HRLResolutionOptions {\n network: NetworkType;\n returnRaw?: boolean;\n cdnEndpoint?: string;\n}\n\n/**\n * Result of an HRL resolution operation\n */\nexport interface HRLResolutionResult {\n content: string | ArrayBuffer;\n contentType: string;\n topicId: string;\n isBinary: boolean;\n}\n\nexport interface ContentWithType {\n content: string | ArrayBuffer;\n contentType: string;\n isBinary: boolean;\n}\n\n/**\n * Utility class for resolving Hedera Resource Locators across the SDK\n */\nexport class HRLResolver {\n private logger: ILogger;\n private defaultEndpoint = 'https://kiloscribe.com/api/inscription-cdn';\n\n constructor(logLevel: LogLevel = 'info') {\n this.logger = Logger.getInstance({\n level: logLevel,\n module: 'HRLResolver',\n });\n }\n\n /**\n * Determines if a MIME type represents binary content\n */\n private isBinaryContentType(mimeType: string): boolean {\n const binaryTypes = [\n 'image/',\n 'audio/',\n 'video/',\n 'application/octet-stream',\n 'application/pdf',\n 'application/zip',\n 'application/gzip',\n 'application/x-binary',\n 'application/vnd.ms-',\n 'application/x-msdownload',\n 'application/x-shockwave-flash',\n 'font/',\n 'application/wasm',\n ];\n\n return binaryTypes.some(prefix => mimeType.startsWith(prefix));\n }\n\n /**\n * Parses an HRL string into its components\n */\n public parseHRL(hrl: string): { standard: string; topicId: string } | null {\n if (!hrl) {\n return null;\n }\n\n const hrlPattern = /^hcs:\\/\\/(\\d+)\\/([0-9]+\\.[0-9]+\\.[0-9]+)$/;\n const match = hrl.match(hrlPattern);\n\n if (!match) {\n return null;\n }\n\n return {\n standard: match[1],\n topicId: match[2],\n };\n }\n\n /**\n * Validates if a string is a valid HRL\n */\n public isValidHRL(hrl: string): boolean {\n if (!hrl || typeof hrl !== 'string') {\n return false;\n }\n\n const parsed = this.parseHRL(hrl);\n if (!parsed) {\n return false;\n }\n\n const topicIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n if (!topicIdPattern.test(parsed.topicId)) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Validates if a string is a valid topic ID\n */\n public isValidTopicId(topicId: string): boolean {\n const topicIdPattern = /^[0-9]+\\.[0-9]+\\.[0-9]+$/;\n return topicIdPattern.test(topicId);\n }\n\n /**\n * Resolves content from either an HRL or a topic ID\n * If a topic ID is provided, it queries the topic memo to determine the HCS standard\n */\n public async resolve(\n hrlOrTopicId: string,\n options: HRLResolutionOptions,\n ): Promise<HRLResolutionResult> {\n if (this.isValidHRL(hrlOrTopicId)) {\n return this.resolveHRL(hrlOrTopicId, options);\n }\n\n if (!this.isValidTopicId(hrlOrTopicId)) {\n throw new Error(`Invalid HRL or topic ID format: ${hrlOrTopicId}`);\n }\n\n try {\n const mirrorNode = new HederaMirrorNode(options.network, this.logger);\n const topicInfo = await mirrorNode.getTopicInfo(hrlOrTopicId);\n const memo = topicInfo?.memo || '';\n\n let standard = '1';\n if (memo) {\n const hcsMatch = memo.match(/^hcs-(\\d+)/);\n if (hcsMatch && hcsMatch[1]) {\n standard = hcsMatch[1];\n }\n }\n\n const hrl = `hcs://${standard}/${hrlOrTopicId}`;\n return this.resolveHRL(hrl, options);\n } catch (error: any) {\n this.logger.error(\n `Failed to get topic info for ${hrlOrTopicId}: ${error.message}`,\n );\n const hrl = `hcs://1/${hrlOrTopicId}`;\n return this.resolveHRL(hrl, options);\n }\n }\n\n public async getContentWithType(\n hrl: string,\n options: HRLResolutionOptions,\n ): Promise<ContentWithType> {\n if (!this.isValidHRL(hrl)) {\n return {\n content: hrl,\n contentType: 'text/plain',\n isBinary: false,\n };\n }\n\n try {\n const result = await this.resolveHRL(hrl, options);\n return {\n content: result.content,\n contentType: result.contentType,\n isBinary: result.isBinary,\n };\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL for content and type: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n\n /**\n * Resolves HRL content with proper content type detection\n */\n public async resolveHRL(\n hrl: string,\n options: HRLResolutionOptions,\n ): Promise<HRLResolutionResult> {\n const parsed = this.parseHRL(hrl);\n\n if (!parsed) {\n throw new Error(`Invalid HRL format: ${hrl}`);\n }\n\n const { standard, topicId } = parsed;\n\n this.logger.debug(\n `Resolving HRL reference: standard=${standard}, topicId=${topicId}`,\n );\n\n try {\n const cdnEndpoint = options.cdnEndpoint || this.defaultEndpoint;\n const cdnUrl = `${cdnEndpoint}/${topicId}?network=${options.network}`;\n\n this.logger.debug(`Fetching content from CDN: ${cdnUrl}`);\n const headResponse = await axios.head(cdnUrl);\n const contentType = headResponse.headers['content-type'] || '';\n const isBinary = this.isBinaryContentType(contentType);\n\n if (isBinary || options.returnRaw) {\n const response = await axios.get(cdnUrl, {\n responseType: 'arraybuffer',\n });\n\n return {\n content: response.data,\n contentType,\n topicId,\n isBinary: true,\n };\n }\n\n if (contentType === 'application/json') {\n const response = await axios.get(cdnUrl, {\n responseType: 'json',\n });\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n return {\n content: response.data,\n contentType,\n topicId,\n isBinary: false,\n };\n }\n\n const response = await axios.get(cdnUrl);\n\n if (!response.data) {\n throw new Error(`Failed to fetch content from topic: ${topicId}`);\n }\n\n let content: string;\n\n if (typeof response.data === 'object') {\n content =\n response.data.content ||\n response.data.text ||\n JSON.stringify(response.data);\n } else {\n content = response.data;\n }\n\n return {\n content,\n contentType,\n topicId,\n isBinary: false,\n };\n } catch (e: any) {\n const error = e as Error;\n const logMessage = `Error resolving HRL reference: ${error.message}`;\n this.logger.error(logMessage);\n throw new Error(logMessage);\n }\n }\n}\n"],"names":["response"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es132.js","sources":["../../src/hcs-25/collectors/erc8004.ts"],"sourcesContent":["import type { Hcs25JsonValue, Hcs25Subject } from '../types';\nimport { readString } from '../signals';\nimport { Hcs25CollectorHttpError, isTimeoutError, requestJson } from './http';\nimport type {\n Hcs25CollectContext,\n Hcs25SignalAdapter,\n Hcs25SignalAdapterResult,\n Hcs25SignalStatus,\n} from './types';\n\n/**\n * Parsed ERC-8004 feedback summary used by the scoring adapter.\n */\nexport interface Hcs25Erc8004FeedbackSummary {\n averageScore: number;\n totalFeedbacks: number;\n registry?: string;\n network?: string;\n updatedAt?: string;\n}\n\n/**\n * A feedback source: returns the summary for a subject or null when the\n * source has no data for it.\n */\nexport interface Hcs25Erc8004FeedbackSource {\n getFeedbackSummary(\n subject: Hcs25Subject,\n context: Hcs25CollectContext,\n ): Promise<Hcs25Erc8004FeedbackSummary | null>;\n}\n\nconst parsePositiveInt = (value: unknown): number | null => {\n if (typeof value === 'number' && Number.isFinite(value)) {\n const normalized = Math.floor(value);\n return normalized > 0 ? normalized : null;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (!trimmed) {\n return null;\n }\n const parsed = Number.parseInt(trimmed, 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : null;\n }\n return null;\n};\n\nconst parseNonNegativeInt = (value: unknown): number | null => {\n if (typeof value === 'number' && Number.isFinite(value)) {\n const normalized = Math.floor(value);\n return normalized >= 0 ? normalized : null;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (!trimmed) {\n return null;\n }\n const parsed = Number.parseInt(trimmed, 10);\n return Number.isFinite(parsed) && parsed >= 0 ? parsed : null;\n }\n return null;\n};\n\nconst parseChainIdFromNetworkKey = (networkKey: unknown): number | null => {\n if (typeof networkKey !== 'string') {\n return null;\n }\n const trimmed = networkKey.trim();\n if (!trimmed) {\n return null;\n }\n const match = /^eip155:(\\d+)(?::|$)/i.exec(trimmed);\n if (!match) {\n return null;\n }\n const parsed = Number.parseInt(match[1], 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : null;\n};\n\nconst parseIdParts = (\n value: unknown,\n): { chainId: number; agentId: string } | null => {\n if (typeof value !== 'string') {\n return null;\n }\n const trimmed = value.trim();\n if (!trimmed) {\n return null;\n }\n const separator = trimmed.indexOf(':');\n if (separator <= 0 || separator !== trimmed.lastIndexOf(':')) {\n return null;\n }\n const chainId = Number.parseInt(trimmed.slice(0, separator), 10);\n const agentId = trimmed.slice(separator + 1);\n if (!Number.isFinite(chainId) || chainId <= 0 || !agentId) {\n return null;\n }\n return { chainId, agentId };\n};\n\n/**\n * Resolves the ERC-8004 `{chainId, agentId}` identity from subject metadata,\n * mirroring the registry-broker production adapter:\n *\n * 1. Explicit `metadata.agentId` + `metadata.chainId` (or\n * `metadata.networkKey` such as `eip155:8453`).\n * 2. `metadata.originalId` / `metadata.nativeId` / `metadata.uid` in\n * `{chainId}:{agentId}` form.\n */\nexport function parseErc8004NativeId(\n subject: Hcs25Subject,\n): { chainId: number; agentId: string } | null {\n const metadata = subject.metadata ?? {};\n\n const idParts =\n parseIdParts(readString(metadata, 'originalId')) ??\n parseIdParts(readString(metadata, 'nativeId')) ??\n parseIdParts(readString(metadata, 'uid'));\n\n const agentId =\n parseNonNegativeInt(metadata['agentId']) ??\n (idParts ? parseNonNegativeInt(idParts.agentId) : null);\n const chainId =\n parsePositiveInt(metadata['chainId']) ??\n parseChainIdFromNetworkKey(metadata['networkKey']) ??\n idParts?.chainId ??\n null;\n\n if (agentId === null || chainId === null) {\n return null;\n }\n return { chainId, agentId: String(agentId) };\n}\n\n/**\n * Options for the HTTP indexer feedback source.\n */\nexport interface Hcs25Erc8004IndexerSourceOptions {\n /**\n * Indexer endpoint template; `{nativeId}`, `{chainId}`, and `{agentId}`\n * placeholders are substituted, or provide a function returning the URL.\n */\n endpoint: string | ((subject: Hcs25Subject) => string | null);\n}\n\ninterface Erc8004IndexerResponse {\n averageScore?: number;\n totalFeedbacks?: number;\n count?: number;\n registry?: string;\n network?: string;\n updatedAt?: string;\n summary?: {\n averageScore?: number;\n totalFeedbacks?: number;\n registry?: string;\n network?: string;\n updatedAt?: string;\n };\n}\n\n/**\n * Creates a feedback source that queries an HTTP indexer exposing ERC-8004\n * reputation summaries as JSON.\n */\nexport function createHttpErc8004FeedbackSource(\n options: Hcs25Erc8004IndexerSourceOptions,\n): Hcs25Erc8004FeedbackSource {\n return {\n async getFeedbackSummary(subject, context) {\n const nativeId = parseErc8004NativeId(subject);\n if (!nativeId) {\n return null;\n }\n const url =\n typeof options.endpoint === 'function'\n ? options.endpoint(subject)\n : options.endpoint\n .replace('{nativeId}', `${nativeId.chainId}:${nativeId.agentId}`)\n .replace('{chainId}', String(nativeId.chainId))\n .replace('{agentId}', nativeId.agentId);\n if (!url) {\n return null;\n }\n const data = await requestJson<Erc8004IndexerResponse>(url, {\n fetch: context.fetch,\n timeoutMs: context.timeoutMs,\n signal: context.signal,\n });\n const summary = data.summary ?? data;\n const averageScore =\n typeof summary.averageScore === 'number' ? summary.averageScore : null;\n const totalFeedbacks =\n typeof summary.totalFeedbacks === 'number'\n ? summary.totalFeedbacks\n : typeof (data as Erc8004IndexerResponse).count === 'number'\n ? (data as Erc8004IndexerResponse).count!\n : null;\n if (averageScore === null && totalFeedbacks === null) {\n return null;\n }\n return {\n averageScore: averageScore ?? 0,\n totalFeedbacks: totalFeedbacks ?? 0,\n registry: summary.registry ?? 'erc-8004',\n network: summary.network ?? String(nativeId.chainId),\n updatedAt: summary.updatedAt,\n };\n },\n };\n}\n\nconst ERC8004_REPUTATION_ABI = [\n 'function getClients(uint256 agentId) view returns (address[])',\n 'function getSummary(uint256 agentId, address[] clientAddresses, string tag1, string tag2) view returns (uint64 count, int128 summaryValue, uint8 summaryValueDecimals)',\n] as const;\n\n/**\n * Minimal contract-call surface needed from an ethers provider/signer or a\n * duck-typed `ethers.Contract`. Callers may also pass a fully custom\n * `readContract` implementation.\n */\nexport interface Hcs25Erc8004ContractCaller {\n getClients(agentId: bigint): Promise<readonly string[]>;\n getSummary(\n agentId: bigint,\n clientAddresses: readonly string[],\n tag1: string,\n tag2: string,\n ): Promise<readonly [bigint, bigint, bigint]>;\n}\n\n/**\n * Options for the on-chain feedback source (EVM ERC-8004 networks).\n */\nexport interface Hcs25Erc8004OnchainSourceOptions {\n /**\n * Registry contract address per chainId (e.g. `{11155111: '0x…'}`).\n */\n registries: Record<number, string>;\n /**\n * Contract factory per chainId: `(registryAddress, agentId)` → caller.\n * Build it with ethers: `new ethers.Contract(addr, ERC8004_ABI, provider)`.\n */\n contractFor: (\n chainId: number,\n registry: string,\n ) => Hcs25Erc8004ContractCaller;\n /**\n * Interpretation of the raw summary value: `auto` treats values ≤5 as a\n * 0–5 scale scaled ×20, ≤100 as already 0–100.\n */\n scoreScale?: 'auto' | 'ratio5' | 'percent';\n tag1?: string;\n tag2?: string;\n}\n\n/**\n * Creates a feedback source that reads the ERC-8004 Reputation Registry\n * contract directly: `getClients(agentId)` then\n * `getSummary(agentId, clients, tag1, tag2)`.\n */\nexport function createOnchainErc8004FeedbackSource(\n options: Hcs25Erc8004OnchainSourceOptions,\n): Hcs25Erc8004FeedbackSource {\n const scoreScale = options.scoreScale ?? 'auto';\n return {\n async getFeedbackSummary(subject) {\n const nativeId = parseErc8004NativeId(subject);\n if (!nativeId) {\n return null;\n }\n const registry = options.registries[nativeId.chainId];\n if (!registry) {\n return null;\n }\n const contract = options.contractFor(nativeId.chainId, registry);\n const agentId = BigInt(nativeId.agentId);\n const clients = await contract.getClients(agentId);\n if (clients.length === 0) {\n return {\n averageScore: 0,\n totalFeedbacks: 0,\n network: String(nativeId.chainId),\n };\n }\n const [count, summaryValue, decimals] = await contract.getSummary(\n agentId,\n [...clients],\n options.tag1 ?? '',\n options.tag2 ?? '',\n );\n const raw = Number(summaryValue) / 10 ** Number(decimals);\n const averageScore =\n scoreScale === 'ratio5'\n ? raw * 20\n : scoreScale === 'percent'\n ? raw\n : raw <= 5\n ? raw * 20\n : raw;\n return {\n averageScore: Math.min(100, Math.max(0, averageScore)),\n totalFeedbacks: Number(count),\n network: String(nativeId.chainId),\n };\n },\n };\n}\n\n/**\n * Options for the ERC-8004 feedback signal adapter.\n */\nexport interface Hcs25Erc8004SignalAdapterOptions {\n /** One or more feedback sources; the first non-null summary wins. */\n sources: readonly Hcs25Erc8004FeedbackSource[];\n timeoutMs?: number;\n includeRegistries?: readonly string[];\n excludeRegistries?: readonly string[];\n appliesTo?: (subject: Hcs25Subject) => boolean;\n}\n\nconst DEFAULT_INCLUDED_REGISTRIES: readonly string[] = ['erc-8004'];\n\nfunction statusFromError(error: unknown): Hcs25SignalStatus {\n return isTimeoutError(error) ? 'timeout' : 'error';\n}\n\n/**\n * Creates the `erc8004-feedback` signal adapter: resolves the subject's\n * `chainId:agentId` identity, queries configured feedback sources (HTTP\n * indexer and/or on-chain via ethers), and writes\n * `metadata.erc8004FeedbackSummary`.\n */\nexport function createErc8004SignalAdapter(\n options: Hcs25Erc8004SignalAdapterOptions,\n): Hcs25SignalAdapter {\n const collect = async (\n subject: Hcs25Subject,\n context: Hcs25CollectContext,\n ): Promise<Hcs25SignalAdapterResult[]> => {\n const now = context.now.toISOString();\n const nativeId = parseErc8004NativeId(subject);\n if (!nativeId) {\n return [{ signalId: 'erc8004.feedback', status: 'missing' }];\n }\n\n let lastError: unknown = null;\n for (const source of options.sources) {\n try {\n const summary = await source.getFeedbackSummary(subject, context);\n if (!summary) {\n continue;\n }\n const averageScore = Math.min(\n 100,\n Math.max(0, Number(summary.averageScore) || 0),\n );\n const totalFeedbacks = Math.max(\n 0,\n Math.floor(Number(summary.totalFeedbacks) || 0),\n );\n const record: Record<string, Hcs25JsonValue> = {\n averageScore,\n totalFeedbacks,\n registry: summary.registry ?? subject.registry ?? 'erc-8004',\n network: summary.network ?? String(nativeId.chainId),\n updatedAt: summary.updatedAt ?? now,\n };\n return [\n {\n signalId: 'erc8004.feedback',\n status: 'ok',\n value: averageScore,\n fields: [{ scope: 'erc8004FeedbackSummary', values: record }],\n provenance: {\n source: 'erc8004',\n subjectId: `${nativeId.chainId}:${nativeId.agentId}`,\n fetchedAt: now,\n },\n },\n ];\n } catch (error) {\n lastError = error;\n continue;\n }\n }\n\n if (lastError) {\n if (\n lastError instanceof Hcs25CollectorHttpError &&\n lastError.status === 404\n ) {\n return [{ signalId: 'erc8004.feedback', status: 'missing' }];\n }\n return [\n {\n signalId: 'erc8004.feedback',\n status: statusFromError(lastError),\n },\n ];\n }\n return [{ signalId: 'erc8004.feedback', status: 'missing' }];\n };\n\n return {\n id: 'erc8004-feedback',\n produces: ['erc8004.feedback'],\n timeoutMs: options.timeoutMs,\n includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,\n excludeRegistries: options.excludeRegistries,\n appliesTo: options.appliesTo,\n collect,\n };\n}\n\nexport { ERC8004_REPUTATION_ABI };\n"],"names":[],"mappings":"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"}
|