@hashgraphonline/standards-sdk 0.1.187 → 0.1.189

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 (196) hide show
  1. package/dist/browser/services/registry-broker/client/agent-network.d.ts +1118 -0
  2. package/dist/browser/services/registry-broker/client/agent-network.d.ts.map +1 -0
  3. package/dist/browser/services/registry-broker/client/base-client.d.ts +4 -0
  4. package/dist/browser/services/registry-broker/client/base-client.d.ts.map +1 -1
  5. package/dist/browser/services/registry-broker/client.d.ts +1 -0
  6. package/dist/browser/services/registry-broker/client.d.ts.map +1 -1
  7. package/dist/browser/standards-sdk.browser.js +176 -0
  8. package/dist/browser/standards-sdk.browser.js.map +1 -1
  9. package/dist/browser-root/services/registry-broker/client/agent-network.d.ts +1118 -0
  10. package/dist/browser-root/services/registry-broker/client/agent-network.d.ts.map +1 -0
  11. package/dist/browser-root/services/registry-broker/client/base-client.d.ts +4 -0
  12. package/dist/browser-root/services/registry-broker/client/base-client.d.ts.map +1 -1
  13. package/dist/browser-root/services/registry-broker/client.d.ts +1 -0
  14. package/dist/browser-root/services/registry-broker/client.d.ts.map +1 -1
  15. package/dist/browser-root/standards-sdk.root-browser.js +471 -15
  16. package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
  17. package/dist/cjs/services/registry-broker/client/agent-network.d.ts +1118 -0
  18. package/dist/cjs/services/registry-broker/client/agent-network.d.ts.map +1 -0
  19. package/dist/cjs/services/registry-broker/client/base-client.d.ts +4 -0
  20. package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
  21. package/dist/cjs/services/registry-broker/client.d.ts +1 -0
  22. package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
  23. package/dist/cjs/standards-sdk.cjs +2 -2
  24. package/dist/cjs/standards-sdk.cjs.map +1 -1
  25. package/dist/es/services/registry-broker/client/agent-network.d.ts +1118 -0
  26. package/dist/es/services/registry-broker/client/agent-network.d.ts.map +1 -0
  27. package/dist/es/services/registry-broker/client/base-client.d.ts +4 -0
  28. package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
  29. package/dist/es/services/registry-broker/client.d.ts +1 -0
  30. package/dist/es/services/registry-broker/client.d.ts.map +1 -1
  31. package/dist/es/standards-sdk.es.js +54 -27
  32. package/dist/es/standards-sdk.es.js.map +1 -1
  33. package/dist/es/standards-sdk.es104.js +1 -1
  34. package/dist/es/standards-sdk.es106.js +1 -1
  35. package/dist/es/standards-sdk.es108.js +1 -1
  36. package/dist/es/standards-sdk.es11.js +1 -1
  37. package/dist/es/standards-sdk.es110.js +1 -1
  38. package/dist/es/standards-sdk.es116.js +2 -2
  39. package/dist/es/standards-sdk.es12.js +1 -1
  40. package/dist/es/standards-sdk.es120.js +4 -4
  41. package/dist/es/standards-sdk.es121.js +11 -11
  42. package/dist/es/standards-sdk.es126.js +1 -1
  43. package/dist/es/standards-sdk.es132.js +3 -2
  44. package/dist/es/standards-sdk.es132.js.map +1 -1
  45. package/dist/es/standards-sdk.es147.js +3 -3
  46. package/dist/es/standards-sdk.es148.js +1 -1
  47. package/dist/es/standards-sdk.es150.js +24 -15
  48. package/dist/es/standards-sdk.es150.js.map +1 -1
  49. package/dist/es/standards-sdk.es152.js +440 -248
  50. package/dist/es/standards-sdk.es152.js.map +1 -1
  51. package/dist/es/standards-sdk.es153.js +259 -4
  52. package/dist/es/standards-sdk.es153.js.map +1 -1
  53. package/dist/es/standards-sdk.es154.js +4 -81
  54. package/dist/es/standards-sdk.es154.js.map +1 -1
  55. package/dist/es/standards-sdk.es155.js +71 -77
  56. package/dist/es/standards-sdk.es155.js.map +1 -1
  57. package/dist/es/standards-sdk.es156.js +80 -53
  58. package/dist/es/standards-sdk.es156.js.map +1 -1
  59. package/dist/es/standards-sdk.es157.js +59 -2546
  60. package/dist/es/standards-sdk.es157.js.map +1 -1
  61. package/dist/es/standards-sdk.es158.js +2547 -159
  62. package/dist/es/standards-sdk.es158.js.map +1 -1
  63. package/dist/es/standards-sdk.es159.js +159 -7
  64. package/dist/es/standards-sdk.es159.js.map +1 -1
  65. package/dist/es/standards-sdk.es16.js +3 -2
  66. package/dist/es/standards-sdk.es16.js.map +1 -1
  67. package/dist/es/standards-sdk.es160.js +7 -86
  68. package/dist/es/standards-sdk.es160.js.map +1 -1
  69. package/dist/es/standards-sdk.es161.js +64 -43
  70. package/dist/es/standards-sdk.es161.js.map +1 -1
  71. package/dist/es/standards-sdk.es162.js +57 -186
  72. package/dist/es/standards-sdk.es162.js.map +1 -1
  73. package/dist/es/standards-sdk.es163.js +188 -20
  74. package/dist/es/standards-sdk.es163.js.map +1 -1
  75. package/dist/es/standards-sdk.es164.js +22 -54
  76. package/dist/es/standards-sdk.es164.js.map +1 -1
  77. package/dist/es/standards-sdk.es165.js +41 -78
  78. package/dist/es/standards-sdk.es165.js.map +1 -1
  79. package/dist/es/standards-sdk.es166.js +81 -35
  80. package/dist/es/standards-sdk.es166.js.map +1 -1
  81. package/dist/es/standards-sdk.es167.js +36 -191
  82. package/dist/es/standards-sdk.es167.js.map +1 -1
  83. package/dist/es/standards-sdk.es168.js +191 -43
  84. package/dist/es/standards-sdk.es168.js.map +1 -1
  85. package/dist/es/standards-sdk.es169.js +46 -39
  86. package/dist/es/standards-sdk.es169.js.map +1 -1
  87. package/dist/es/standards-sdk.es170.js +37 -44
  88. package/dist/es/standards-sdk.es170.js.map +1 -1
  89. package/dist/es/standards-sdk.es171.js +46 -39
  90. package/dist/es/standards-sdk.es171.js.map +1 -1
  91. package/dist/es/standards-sdk.es172.js +29 -102
  92. package/dist/es/standards-sdk.es172.js.map +1 -1
  93. package/dist/es/standards-sdk.es173.js +104 -36
  94. package/dist/es/standards-sdk.es173.js.map +1 -1
  95. package/dist/es/standards-sdk.es174.js +43 -33
  96. package/dist/es/standards-sdk.es174.js.map +1 -1
  97. package/dist/es/standards-sdk.es175.js +44 -72
  98. package/dist/es/standards-sdk.es175.js.map +1 -1
  99. package/dist/es/standards-sdk.es176.js +65 -61
  100. package/dist/es/standards-sdk.es176.js.map +1 -1
  101. package/dist/es/standards-sdk.es177.js +63 -39
  102. package/dist/es/standards-sdk.es177.js.map +1 -1
  103. package/dist/es/standards-sdk.es178.js +44 -36
  104. package/dist/es/standards-sdk.es178.js.map +1 -1
  105. package/dist/es/standards-sdk.es179.js +36 -30
  106. package/dist/es/standards-sdk.es179.js.map +1 -1
  107. package/dist/es/standards-sdk.es18.js +6 -5
  108. package/dist/es/standards-sdk.es18.js.map +1 -1
  109. package/dist/es/standards-sdk.es180.js +30 -34
  110. package/dist/es/standards-sdk.es180.js.map +1 -1
  111. package/dist/es/standards-sdk.es181.js +34 -48
  112. package/dist/es/standards-sdk.es181.js.map +1 -1
  113. package/dist/es/standards-sdk.es182.js +48 -138
  114. package/dist/es/standards-sdk.es182.js.map +1 -1
  115. package/dist/es/standards-sdk.es183.js +133 -37
  116. package/dist/es/standards-sdk.es183.js.map +1 -1
  117. package/dist/es/standards-sdk.es184.js +34 -12474
  118. package/dist/es/standards-sdk.es184.js.map +1 -1
  119. package/dist/es/standards-sdk.es185.js +12425 -615
  120. package/dist/es/standards-sdk.es185.js.map +1 -1
  121. package/dist/es/standards-sdk.es186.js +47 -102
  122. package/dist/es/standards-sdk.es186.js.map +1 -1
  123. package/dist/es/standards-sdk.es187.js +96 -58
  124. package/dist/es/standards-sdk.es187.js.map +1 -1
  125. package/dist/es/standards-sdk.es188.js +73 -48
  126. package/dist/es/standards-sdk.es188.js.map +1 -1
  127. package/dist/es/standards-sdk.es189.js +180 -61
  128. package/dist/es/standards-sdk.es189.js.map +1 -1
  129. package/dist/es/standards-sdk.es19.js +4 -3
  130. package/dist/es/standards-sdk.es19.js.map +1 -1
  131. package/dist/es/standards-sdk.es190.js +659 -187
  132. package/dist/es/standards-sdk.es190.js.map +1 -1
  133. package/dist/es/standards-sdk.es197.js +71 -15
  134. package/dist/es/standards-sdk.es197.js.map +1 -1
  135. package/dist/es/standards-sdk.es198.js +14 -136
  136. package/dist/es/standards-sdk.es198.js.map +1 -1
  137. package/dist/es/standards-sdk.es199.js +104 -482
  138. package/dist/es/standards-sdk.es199.js.map +1 -1
  139. package/dist/es/standards-sdk.es200.js +480 -222
  140. package/dist/es/standards-sdk.es200.js.map +1 -1
  141. package/dist/es/standards-sdk.es201.js +239 -176
  142. package/dist/es/standards-sdk.es201.js.map +1 -1
  143. package/dist/es/standards-sdk.es202.js +178 -101
  144. package/dist/es/standards-sdk.es202.js.map +1 -1
  145. package/dist/es/standards-sdk.es203.js +75 -108
  146. package/dist/es/standards-sdk.es203.js.map +1 -1
  147. package/dist/es/standards-sdk.es204.js +116 -148
  148. package/dist/es/standards-sdk.es204.js.map +1 -1
  149. package/dist/es/standards-sdk.es205.js +146 -646
  150. package/dist/es/standards-sdk.es205.js.map +1 -1
  151. package/dist/es/standards-sdk.es206.js +661 -162
  152. package/dist/es/standards-sdk.es206.js.map +1 -1
  153. package/dist/es/standards-sdk.es207.js +156 -206
  154. package/dist/es/standards-sdk.es207.js.map +1 -1
  155. package/dist/es/standards-sdk.es208.js +219 -223
  156. package/dist/es/standards-sdk.es208.js.map +1 -1
  157. package/dist/es/standards-sdk.es209.js +242 -0
  158. package/dist/es/standards-sdk.es209.js.map +1 -0
  159. package/dist/es/standards-sdk.es22.js +1 -1
  160. package/dist/es/standards-sdk.es27.js +6 -5
  161. package/dist/es/standards-sdk.es27.js.map +1 -1
  162. package/dist/es/standards-sdk.es30.js +1 -1
  163. package/dist/es/standards-sdk.es31.js +1 -1
  164. package/dist/es/standards-sdk.es35.js +4 -3
  165. package/dist/es/standards-sdk.es35.js.map +1 -1
  166. package/dist/es/standards-sdk.es36.js +3 -3
  167. package/dist/es/standards-sdk.es37.js +1 -1
  168. package/dist/es/standards-sdk.es4.js +1 -1
  169. package/dist/es/standards-sdk.es53.js +1 -1
  170. package/dist/es/standards-sdk.es56.js +1 -1
  171. package/dist/es/standards-sdk.es59.js +1 -1
  172. package/dist/es/standards-sdk.es60.js +1 -1
  173. package/dist/es/standards-sdk.es62.js +1 -1
  174. package/dist/es/standards-sdk.es63.js +2 -2
  175. package/dist/es/standards-sdk.es64.js +1 -1
  176. package/dist/es/standards-sdk.es65.js +1 -1
  177. package/dist/es/standards-sdk.es66.js +1 -1
  178. package/dist/es/standards-sdk.es67.js +4 -3
  179. package/dist/es/standards-sdk.es67.js.map +1 -1
  180. package/dist/es/standards-sdk.es69.js +1 -1
  181. package/dist/es/standards-sdk.es7.js +1 -1
  182. package/dist/es/standards-sdk.es71.js +1 -1
  183. package/dist/es/standards-sdk.es72.js +2 -2
  184. package/dist/es/standards-sdk.es75.js +3 -3
  185. package/dist/es/standards-sdk.es76.js +1 -1
  186. package/dist/es/standards-sdk.es78.js +1 -1
  187. package/dist/es/standards-sdk.es83.js +1 -1
  188. package/dist/es/standards-sdk.es84.js +3 -2
  189. package/dist/es/standards-sdk.es84.js.map +1 -1
  190. package/dist/es/standards-sdk.es85.js +1 -1
  191. package/dist/es/standards-sdk.es88.js +1 -1
  192. package/dist/es/standards-sdk.es90.js +1 -1
  193. package/dist/es/standards-sdk.es94.js +3 -3
  194. package/dist/es/standards-sdk.es98.js +1 -1
  195. package/dist/es/standards-sdk.es99.js +1 -1
  196. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es164.js","sources":["../../src/hcs-25/adapters/acp.ts"],"sourcesContent":["import { clampScore } from '../scoring';\nimport type {\n Hcs25AdapterDefinition,\n Hcs25NormalizedValue,\n Hcs25Subject,\n} from '../types';\nimport { readNumber, readSubjectMetrics } from '../signals';\nimport { logScale, normalizeRatio } from './normalization';\n\n/**\n * Options for the ACP/Virtuals marketplace adapter.\n */\nexport interface Hcs25AcpAdapterOptions {\n /** Volume cap used for log scaling delivery volume. Default 500. */\n volumeCap?: number;\n /** Revenue cap used for log scaling revenue. Default 10000. */\n revenueCap?: number;\n /** Registries where marketplace metrics apply. */\n includeRegistries?: readonly string[];\n}\n\nconst DEFAULT_INCLUDED_REGISTRIES: readonly string[] = ['virtuals-protocol'];\n\nconst MISSING: Hcs25NormalizedValue = { value: 0, status: 'missing' };\n\nfunction readAcpField(subject: Hcs25Subject, key: string): number | null {\n const metricsValue = readNumber(readSubjectMetrics(subject), key);\n if (metricsValue !== null) {\n return metricsValue;\n }\n const metadata = subject.metadata;\n return metadata ? readNumber(metadata, key) : null;\n}\n\n/**\n * Creates the `acp` adapter: normalizes marketplace-native execution\n * performance (job success, delivery volume, revenue, ratings) for\n * ACP/Virtuals-style agents. Delivery volume falls back to the successful\n * job count when no provider-defined volume exists.\n */\nexport function createAcpAdapter(\n options: Hcs25AcpAdapterOptions = {},\n): Hcs25AdapterDefinition {\n const volumeCap = options.volumeCap ?? 500;\n const revenueCap = options.revenueCap ?? 10000;\n\n return {\n id: 'acp',\n weight: 2,\n contributionMode: 'scoped',\n includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,\n components: [\n {\n name: 'jobs.successRate',\n normalize: ({ subject }): Hcs25NormalizedValue => {\n const raw = readAcpField(subject, 'successRate');\n return raw === null\n ? MISSING\n : { value: clampScore(normalizeRatio(raw) * 100), status: 'ok' };\n },\n },\n {\n name: 'jobs.deliveryVolume',\n normalize: ({ subject }): Hcs25NormalizedValue => {\n const volume =\n readAcpField(subject, 'volume') ??\n readAcpField(subject, 'successfulJobCount');\n return volume === null\n ? MISSING\n : { value: logScale(volume, volumeCap), status: 'ok' };\n },\n },\n {\n name: 'jobs.revenue',\n normalize: ({ subject }): Hcs25NormalizedValue => {\n const revenue = readAcpField(subject, 'revenue');\n return revenue === null\n ? MISSING\n : { value: logScale(revenue, revenueCap), status: 'ok' };\n },\n },\n {\n name: 'reviews.rating',\n normalize: ({ subject }): Hcs25NormalizedValue => {\n const rating = readAcpField(subject, 'rating');\n return rating === null\n ? MISSING\n : { value: clampScore((rating / 5) * 100), status: 'ok' };\n },\n },\n ],\n };\n}\n"],"names":[],"mappings":";;;;;;;AAqBA,MAAM,8BAAiD,CAAC,mBAAmB;AAE3E,MAAM,UAAgC,EAAE,OAAO,GAAG,QAAQ,UAAA;AAE1D,SAAS,aAAa,SAAuB,KAA4B;AACvE,QAAM,eAAe,WAAW,mBAAmB,OAAO,GAAG,GAAG;AAChE,MAAI,iBAAiB,MAAM;AACzB,WAAO;AAAA,EACT;AACA,QAAM,WAAW,QAAQ;AACzB,SAAO,WAAW,WAAW,UAAU,GAAG,IAAI;AAChD;AAQO,SAAS,iBACd,UAAkC,IACV;AACxB,QAAM,YAAY,QAAQ,aAAa;AACvC,QAAM,aAAa,QAAQ,cAAc;AAEzC,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,mBAAmB,QAAQ,qBAAqB;AAAA,IAChD,YAAY;AAAA,MACV;AAAA,QACE,MAAM;AAAA,QACN,WAAW,CAAC,EAAE,cAAoC;AAChD,gBAAM,MAAM,aAAa,SAAS,aAAa;AAC/C,iBAAO,QAAQ,OACX,UACA,EAAE,OAAO,WAAW,eAAe,GAAG,IAAI,GAAG,GAAG,QAAQ,KAAA;AAAA,QAC9D;AAAA,MAAA;AAAA,MAEF;AAAA,QACE,MAAM;AAAA,QACN,WAAW,CAAC,EAAE,cAAoC;AAChD,gBAAM,SACJ,aAAa,SAAS,QAAQ,KAC9B,aAAa,SAAS,oBAAoB;AAC5C,iBAAO,WAAW,OACd,UACA,EAAE,OAAO,SAAS,QAAQ,SAAS,GAAG,QAAQ,KAAA;AAAA,QACpD;AAAA,MAAA;AAAA,MAEF;AAAA,QACE,MAAM;AAAA,QACN,WAAW,CAAC,EAAE,cAAoC;AAChD,gBAAM,UAAU,aAAa,SAAS,SAAS;AAC/C,iBAAO,YAAY,OACf,UACA,EAAE,OAAO,SAAS,SAAS,UAAU,GAAG,QAAQ,KAAA;AAAA,QACtD;AAAA,MAAA;AAAA,MAEF;AAAA,QACE,MAAM;AAAA,QACN,WAAW,CAAC,EAAE,cAAoC;AAChD,gBAAM,SAAS,aAAa,SAAS,QAAQ;AAC7C,iBAAO,WAAW,OACd,UACA,EAAE,OAAO,WAAY,SAAS,IAAK,GAAG,GAAG,QAAQ,KAAA;AAAA,QACvD;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"standards-sdk.es164.js","sources":["../../src/hcs-25/adapters/normalization.ts"],"sourcesContent":["import { clampScore } from '../scoring';\n\n/**\n * Clamps a value into the unit interval `[0, 1]`.\n */\nexport function clampUnit(value: number): number {\n return Math.min(1, Math.max(0, value));\n}\n\n/**\n * Normalizes a ratio that implementations may store either as `0..1` or as\n * `0..100`. Values above one are treated as percent scale.\n */\nexport function normalizeRatio(value: number): number {\n return clampUnit(value > 1 ? value / 100 : value);\n}\n\n/**\n * Log-scales a raw count into `[0, 100]` using `log1p` against a cap, per\n * the HCS-25 recommended log-scaling pattern.\n */\nexport function logScale(value: number, cap: number): number {\n if (cap <= 0) {\n return 0;\n }\n return clampScore(\n 100 * clampUnit(Math.log1p(Math.max(0, value)) / Math.log1p(cap)),\n );\n}\n\n/**\n * Computes the arithmetic mean of the provided values, returning null when\n * none are present.\n */\nexport function meanOfPresent(\n values: readonly (number | null)[],\n): number | null {\n const present = values.filter((value): value is number => value !== null);\n if (present.length === 0) {\n return null;\n }\n return present.reduce((sum, value) => sum + value, 0) / present.length;\n}\n"],"names":[],"mappings":";AAKO,SAAS,UAAU,OAAuB;AAC/C,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC;AACvC;AAMO,SAAS,eAAe,OAAuB;AACpD,SAAO,UAAU,QAAQ,IAAI,QAAQ,MAAM,KAAK;AAClD;AAMO,SAAS,SAAS,OAAe,KAAqB;AAC3D,MAAI,OAAO,GAAG;AACZ,WAAO;AAAA,EACT;AACA,SAAO;AAAA,IACL,MAAM,UAAU,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,GAAG,CAAC;AAAA,EAAA;AAEpE;AAMO,SAAS,cACd,QACe;AACf,QAAM,UAAU,OAAO,OAAO,CAAC,UAA2B,UAAU,IAAI;AACxE,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,CAAC,IAAI,QAAQ;AAClE;"}
@@ -1,98 +1,61 @@
1
1
  import { clampScore } from "./standards-sdk.es119.js";
2
- import { readSubjectAdditional, readNumber } from "./standards-sdk.es178.js";
3
- import "./standards-sdk.es162.js";
4
- import "./standards-sdk.es175.js";
2
+ import { readNumber, readSubjectMetrics } from "./standards-sdk.es179.js";
3
+ import "./standards-sdk.es163.js";
5
4
  import "./standards-sdk.es176.js";
6
5
  import "./standards-sdk.es177.js";
7
- import { clampUnit } from "./standards-sdk.es163.js";
8
- const DEFAULT_INCLUDED_REGISTRIES = ["agentverse", "uagent"];
6
+ import "./standards-sdk.es178.js";
7
+ import { normalizeRatio, logScale } from "./standards-sdk.es164.js";
8
+ const DEFAULT_INCLUDED_REGISTRIES = ["virtuals-protocol"];
9
9
  const MISSING = { value: 0, status: "missing" };
10
- function normalizeInsights(subject) {
11
- const additional = readSubjectAdditional(subject);
12
- const rating = readNumber(additional, "agentverseInsightsRating");
13
- if (rating !== null) {
14
- return { value: clampScore(rating / 5 * 100), status: "ok" };
10
+ function readAcpField(subject, key) {
11
+ const metricsValue = readNumber(readSubjectMetrics(subject), key);
12
+ if (metricsValue !== null) {
13
+ return metricsValue;
15
14
  }
16
- const proxies = [
17
- readNumber(additional, "agentverseInsightsReadmeQualityScore"),
18
- readNumber(additional, "agentverseInsightsReadmeUniquenessScore"),
19
- readNumber(additional, "agentverseInsightsInteractionsScore")
20
- ].filter((value) => value !== null);
21
- if (proxies.length === 0) {
22
- return MISSING;
23
- }
24
- const mean = proxies.reduce((sum, value) => sum + value, 0) / proxies.length;
25
- return { value: clampScore(mean * 100), status: "ok" };
15
+ const metadata = subject.metadata;
16
+ return metadata ? readNumber(metadata, key) : null;
26
17
  }
27
- function createAgentverseInsightsAdapter(options = {}) {
18
+ function createAcpAdapter(options = {}) {
19
+ const volumeCap = options.volumeCap ?? 500;
20
+ const revenueCap = options.revenueCap ?? 1e4;
28
21
  return {
29
- id: "agentverse-insights",
30
- weight: 1,
22
+ id: "acp",
23
+ weight: 2,
31
24
  contributionMode: "scoped",
32
25
  includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,
33
- defaultComponentKey: "agentverse-insights.score",
34
- components: [
35
- { name: "score", normalize: ({ subject }) => normalizeInsights(subject) }
36
- ]
37
- };
38
- }
39
- function createAgentverseVerifierAdapter(options = {}) {
40
- const interactionCap = options.interactionCap ?? 1e3;
41
- const responseTimeCapSeconds = options.responseTimeCapSeconds ?? 30;
42
- return {
43
- id: "agentverse-verifier",
44
- weight: 1,
45
- contributionMode: "conditional",
46
- includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,
47
- defaultComponentKey: "agentverse-verifier.score",
48
26
  components: [
49
27
  {
50
- name: "score",
51
- nonScorableWhenUnavailable: true,
28
+ name: "jobs.successRate",
29
+ normalize: ({ subject }) => {
30
+ const raw = readAcpField(subject, "successRate");
31
+ return raw === null ? MISSING : { value: clampScore(normalizeRatio(raw) * 100), status: "ok" };
32
+ }
33
+ },
34
+ {
35
+ name: "jobs.deliveryVolume",
36
+ normalize: ({ subject }) => {
37
+ const volume = readAcpField(subject, "volume") ?? readAcpField(subject, "successfulJobCount");
38
+ return volume === null ? MISSING : { value: logScale(volume, volumeCap), status: "ok" };
39
+ }
40
+ },
41
+ {
42
+ name: "jobs.revenue",
43
+ normalize: ({ subject }) => {
44
+ const revenue = readAcpField(subject, "revenue");
45
+ return revenue === null ? MISSING : { value: logScale(revenue, revenueCap), status: "ok" };
46
+ }
47
+ },
48
+ {
49
+ name: "reviews.rating",
52
50
  normalize: ({ subject }) => {
53
- const additional = readSubjectAdditional(subject);
54
- const recentInteractions = readNumber(
55
- additional,
56
- "agentverseInsightsVerifierRecentInteractions"
57
- ) ?? 0;
58
- const recentSuccesses = readNumber(
59
- additional,
60
- "agentverseInsightsVerifierRecentSuccessInteractions"
61
- ) ?? 0;
62
- const totalInteractions = readNumber(
63
- additional,
64
- "agentverseInsightsVerifierTotalInteractions"
65
- ) ?? 0;
66
- const totalSuccesses = readNumber(
67
- additional,
68
- "agentverseInsightsVerifierTotalSuccessInteractions"
69
- ) ?? 0;
70
- const useRecent = recentInteractions > 0;
71
- const interactions = useRecent ? recentInteractions : totalInteractions;
72
- const successes = useRecent ? recentSuccesses : totalSuccesses;
73
- if (interactions <= 0) {
74
- return MISSING;
75
- }
76
- const successRate = clampUnit(successes / interactions) * 100;
77
- const avgResponseTime = readNumber(
78
- additional,
79
- "agentverseInsightsAvgResponseTime"
80
- );
81
- const responseFactor = avgResponseTime === null ? 1 : clampUnit(1 - avgResponseTime / responseTimeCapSeconds);
82
- const volumeFactor = clampUnit(
83
- Math.log1p(interactions) / Math.log1p(interactionCap)
84
- );
85
- return {
86
- value: clampScore(successRate * responseFactor * volumeFactor),
87
- status: "ok"
88
- };
51
+ const rating = readAcpField(subject, "rating");
52
+ return rating === null ? MISSING : { value: clampScore(rating / 5 * 100), status: "ok" };
89
53
  }
90
54
  }
91
55
  ]
92
56
  };
93
57
  }
94
58
  export {
95
- createAgentverseInsightsAdapter,
96
- createAgentverseVerifierAdapter
59
+ createAcpAdapter
97
60
  };
98
61
  //# sourceMappingURL=standards-sdk.es165.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es165.js","sources":["../../src/hcs-25/adapters/agentverse.ts"],"sourcesContent":["import { clampScore } from '../scoring';\nimport type {\n Hcs25AdapterDefinition,\n Hcs25NormalizedValue,\n Hcs25Subject,\n} from '../types';\nimport {\n readNumber,\n readSubjectAdditional,\n type Hcs25JsonObject,\n} from '../signals';\nimport { clampUnit } from './normalization';\n\n/**\n * Options for the AgentVerse insights adapter.\n */\nexport interface Hcs25AgentverseInsightsAdapterOptions {\n /** Registries where AgentVerse insights apply. */\n includeRegistries?: readonly string[];\n}\n\n/**\n * Options for the AgentVerse verifier reliability adapter.\n */\nexport interface Hcs25AgentverseVerifierAdapterOptions {\n /** Interaction count cap for the volume confidence factor. Default 1000. */\n interactionCap?: number;\n /** Average response time (seconds) that maps to a zero factor. Default 30. */\n responseTimeCapSeconds?: number;\n /** Registries where AgentVerse verifier counters apply. */\n includeRegistries?: readonly string[];\n}\n\nconst DEFAULT_INCLUDED_REGISTRIES: readonly string[] = ['agentverse', 'uagent'];\n\nconst MISSING: Hcs25NormalizedValue = { value: 0, status: 'missing' };\n\nfunction normalizeInsights(subject: Hcs25Subject): Hcs25NormalizedValue {\n const additional: Hcs25JsonObject = readSubjectAdditional(subject);\n const rating = readNumber(additional, 'agentverseInsightsRating');\n if (rating !== null) {\n return { value: clampScore((rating / 5) * 100), status: 'ok' };\n }\n\n const proxies = [\n readNumber(additional, 'agentverseInsightsReadmeQualityScore'),\n readNumber(additional, 'agentverseInsightsReadmeUniquenessScore'),\n readNumber(additional, 'agentverseInsightsInteractionsScore'),\n ].filter((value): value is number => value !== null);\n\n if (proxies.length === 0) {\n return MISSING;\n }\n\n const mean = proxies.reduce((sum, value) => sum + value, 0) / proxies.length;\n return { value: clampScore(mean * 100), status: 'ok' };\n}\n\n/**\n * Creates the `agentverse-insights` adapter: converts marketplace \"insights\"\n * indicators into a single normalized component, preferring the explicit\n * rating (scaled from five) and falling back to the mean of the available\n * quality proxies.\n */\nexport function createAgentverseInsightsAdapter(\n options: Hcs25AgentverseInsightsAdapterOptions = {},\n): Hcs25AdapterDefinition {\n return {\n id: 'agentverse-insights',\n weight: 1,\n contributionMode: 'scoped',\n includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,\n defaultComponentKey: 'agentverse-insights.score',\n components: [\n { name: 'score', normalize: ({ subject }) => normalizeInsights(subject) },\n ],\n };\n}\n\n/**\n * Creates the `agentverse-verifier` adapter: converts verifier interaction\n * counters into a reliability score combining success rate, a response-time\n * penalty, and a volume confidence factor. Conditional contribution keeps\n * agents without verifier counters out of the denominator.\n */\nexport function createAgentverseVerifierAdapter(\n options: Hcs25AgentverseVerifierAdapterOptions = {},\n): Hcs25AdapterDefinition {\n const interactionCap = options.interactionCap ?? 1000;\n const responseTimeCapSeconds = options.responseTimeCapSeconds ?? 30;\n\n return {\n id: 'agentverse-verifier',\n weight: 1,\n contributionMode: 'conditional',\n includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,\n defaultComponentKey: 'agentverse-verifier.score',\n components: [\n {\n name: 'score',\n nonScorableWhenUnavailable: true,\n normalize: ({ subject }): Hcs25NormalizedValue => {\n const additional = readSubjectAdditional(subject);\n const recentInteractions =\n readNumber(\n additional,\n 'agentverseInsightsVerifierRecentInteractions',\n ) ?? 0;\n const recentSuccesses =\n readNumber(\n additional,\n 'agentverseInsightsVerifierRecentSuccessInteractions',\n ) ?? 0;\n const totalInteractions =\n readNumber(\n additional,\n 'agentverseInsightsVerifierTotalInteractions',\n ) ?? 0;\n const totalSuccesses =\n readNumber(\n additional,\n 'agentverseInsightsVerifierTotalSuccessInteractions',\n ) ?? 0;\n\n const useRecent = recentInteractions > 0;\n const interactions = useRecent\n ? recentInteractions\n : totalInteractions;\n const successes = useRecent ? recentSuccesses : totalSuccesses;\n\n if (interactions <= 0) {\n return MISSING;\n }\n\n const successRate = clampUnit(successes / interactions) * 100;\n const avgResponseTime = readNumber(\n additional,\n 'agentverseInsightsAvgResponseTime',\n );\n const responseFactor =\n avgResponseTime === null\n ? 1\n : clampUnit(1 - avgResponseTime / responseTimeCapSeconds);\n const volumeFactor = clampUnit(\n Math.log1p(interactions) / Math.log1p(interactionCap),\n );\n\n return {\n value: clampScore(successRate * responseFactor * volumeFactor),\n status: 'ok',\n };\n },\n },\n ],\n };\n}\n"],"names":[],"mappings":";;;;;;;AAiCA,MAAM,8BAAiD,CAAC,cAAc,QAAQ;AAE9E,MAAM,UAAgC,EAAE,OAAO,GAAG,QAAQ,UAAA;AAE1D,SAAS,kBAAkB,SAA6C;AACtE,QAAM,aAA8B,sBAAsB,OAAO;AACjE,QAAM,SAAS,WAAW,YAAY,0BAA0B;AAChE,MAAI,WAAW,MAAM;AACnB,WAAO,EAAE,OAAO,WAAY,SAAS,IAAK,GAAG,GAAG,QAAQ,KAAA;AAAA,EAC1D;AAEA,QAAM,UAAU;AAAA,IACd,WAAW,YAAY,sCAAsC;AAAA,IAC7D,WAAW,YAAY,yCAAyC;AAAA,IAChE,WAAW,YAAY,qCAAqC;AAAA,EAAA,EAC5D,OAAO,CAAC,UAA2B,UAAU,IAAI;AAEnD,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,QAAQ,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,CAAC,IAAI,QAAQ;AACtE,SAAO,EAAE,OAAO,WAAW,OAAO,GAAG,GAAG,QAAQ,KAAA;AAClD;AAQO,SAAS,gCACd,UAAiD,IACzB;AACxB,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,mBAAmB,QAAQ,qBAAqB;AAAA,IAChD,qBAAqB;AAAA,IACrB,YAAY;AAAA,MACV,EAAE,MAAM,SAAS,WAAW,CAAC,EAAE,QAAA,MAAc,kBAAkB,OAAO,EAAA;AAAA,IAAE;AAAA,EAC1E;AAEJ;AAQO,SAAS,gCACd,UAAiD,IACzB;AACxB,QAAM,iBAAiB,QAAQ,kBAAkB;AACjD,QAAM,yBAAyB,QAAQ,0BAA0B;AAEjE,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,mBAAmB,QAAQ,qBAAqB;AAAA,IAChD,qBAAqB;AAAA,IACrB,YAAY;AAAA,MACV;AAAA,QACE,MAAM;AAAA,QACN,4BAA4B;AAAA,QAC5B,WAAW,CAAC,EAAE,cAAoC;AAChD,gBAAM,aAAa,sBAAsB,OAAO;AAChD,gBAAM,qBACJ;AAAA,YACE;AAAA,YACA;AAAA,UAAA,KACG;AACP,gBAAM,kBACJ;AAAA,YACE;AAAA,YACA;AAAA,UAAA,KACG;AACP,gBAAM,oBACJ;AAAA,YACE;AAAA,YACA;AAAA,UAAA,KACG;AACP,gBAAM,iBACJ;AAAA,YACE;AAAA,YACA;AAAA,UAAA,KACG;AAEP,gBAAM,YAAY,qBAAqB;AACvC,gBAAM,eAAe,YACjB,qBACA;AACJ,gBAAM,YAAY,YAAY,kBAAkB;AAEhD,cAAI,gBAAgB,GAAG;AACrB,mBAAO;AAAA,UACT;AAEA,gBAAM,cAAc,UAAU,YAAY,YAAY,IAAI;AAC1D,gBAAM,kBAAkB;AAAA,YACtB;AAAA,YACA;AAAA,UAAA;AAEF,gBAAM,iBACJ,oBAAoB,OAChB,IACA,UAAU,IAAI,kBAAkB,sBAAsB;AAC5D,gBAAM,eAAe;AAAA,YACnB,KAAK,MAAM,YAAY,IAAI,KAAK,MAAM,cAAc;AAAA,UAAA;AAGtD,iBAAO;AAAA,YACL,OAAO,WAAW,cAAc,iBAAiB,YAAY;AAAA,YAC7D,QAAQ;AAAA,UAAA;AAAA,QAEZ;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"standards-sdk.es165.js","sources":["../../src/hcs-25/adapters/acp.ts"],"sourcesContent":["import { clampScore } from '../scoring';\nimport type {\n Hcs25AdapterDefinition,\n Hcs25NormalizedValue,\n Hcs25Subject,\n} from '../types';\nimport { readNumber, readSubjectMetrics } from '../signals';\nimport { logScale, normalizeRatio } from './normalization';\n\n/**\n * Options for the ACP/Virtuals marketplace adapter.\n */\nexport interface Hcs25AcpAdapterOptions {\n /** Volume cap used for log scaling delivery volume. Default 500. */\n volumeCap?: number;\n /** Revenue cap used for log scaling revenue. Default 10000. */\n revenueCap?: number;\n /** Registries where marketplace metrics apply. */\n includeRegistries?: readonly string[];\n}\n\nconst DEFAULT_INCLUDED_REGISTRIES: readonly string[] = ['virtuals-protocol'];\n\nconst MISSING: Hcs25NormalizedValue = { value: 0, status: 'missing' };\n\nfunction readAcpField(subject: Hcs25Subject, key: string): number | null {\n const metricsValue = readNumber(readSubjectMetrics(subject), key);\n if (metricsValue !== null) {\n return metricsValue;\n }\n const metadata = subject.metadata;\n return metadata ? readNumber(metadata, key) : null;\n}\n\n/**\n * Creates the `acp` adapter: normalizes marketplace-native execution\n * performance (job success, delivery volume, revenue, ratings) for\n * ACP/Virtuals-style agents. Delivery volume falls back to the successful\n * job count when no provider-defined volume exists.\n */\nexport function createAcpAdapter(\n options: Hcs25AcpAdapterOptions = {},\n): Hcs25AdapterDefinition {\n const volumeCap = options.volumeCap ?? 500;\n const revenueCap = options.revenueCap ?? 10000;\n\n return {\n id: 'acp',\n weight: 2,\n contributionMode: 'scoped',\n includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,\n components: [\n {\n name: 'jobs.successRate',\n normalize: ({ subject }): Hcs25NormalizedValue => {\n const raw = readAcpField(subject, 'successRate');\n return raw === null\n ? MISSING\n : { value: clampScore(normalizeRatio(raw) * 100), status: 'ok' };\n },\n },\n {\n name: 'jobs.deliveryVolume',\n normalize: ({ subject }): Hcs25NormalizedValue => {\n const volume =\n readAcpField(subject, 'volume') ??\n readAcpField(subject, 'successfulJobCount');\n return volume === null\n ? MISSING\n : { value: logScale(volume, volumeCap), status: 'ok' };\n },\n },\n {\n name: 'jobs.revenue',\n normalize: ({ subject }): Hcs25NormalizedValue => {\n const revenue = readAcpField(subject, 'revenue');\n return revenue === null\n ? MISSING\n : { value: logScale(revenue, revenueCap), status: 'ok' };\n },\n },\n {\n name: 'reviews.rating',\n normalize: ({ subject }): Hcs25NormalizedValue => {\n const rating = readAcpField(subject, 'rating');\n return rating === null\n ? MISSING\n : { value: clampScore((rating / 5) * 100), status: 'ok' };\n },\n },\n ],\n };\n}\n"],"names":[],"mappings":";;;;;;;AAqBA,MAAM,8BAAiD,CAAC,mBAAmB;AAE3E,MAAM,UAAgC,EAAE,OAAO,GAAG,QAAQ,UAAA;AAE1D,SAAS,aAAa,SAAuB,KAA4B;AACvE,QAAM,eAAe,WAAW,mBAAmB,OAAO,GAAG,GAAG;AAChE,MAAI,iBAAiB,MAAM;AACzB,WAAO;AAAA,EACT;AACA,QAAM,WAAW,QAAQ;AACzB,SAAO,WAAW,WAAW,UAAU,GAAG,IAAI;AAChD;AAQO,SAAS,iBACd,UAAkC,IACV;AACxB,QAAM,YAAY,QAAQ,aAAa;AACvC,QAAM,aAAa,QAAQ,cAAc;AAEzC,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,mBAAmB,QAAQ,qBAAqB;AAAA,IAChD,YAAY;AAAA,MACV;AAAA,QACE,MAAM;AAAA,QACN,WAAW,CAAC,EAAE,cAAoC;AAChD,gBAAM,MAAM,aAAa,SAAS,aAAa;AAC/C,iBAAO,QAAQ,OACX,UACA,EAAE,OAAO,WAAW,eAAe,GAAG,IAAI,GAAG,GAAG,QAAQ,KAAA;AAAA,QAC9D;AAAA,MAAA;AAAA,MAEF;AAAA,QACE,MAAM;AAAA,QACN,WAAW,CAAC,EAAE,cAAoC;AAChD,gBAAM,SACJ,aAAa,SAAS,QAAQ,KAC9B,aAAa,SAAS,oBAAoB;AAC5C,iBAAO,WAAW,OACd,UACA,EAAE,OAAO,SAAS,QAAQ,SAAS,GAAG,QAAQ,KAAA;AAAA,QACpD;AAAA,MAAA;AAAA,MAEF;AAAA,QACE,MAAM;AAAA,QACN,WAAW,CAAC,EAAE,cAAoC;AAChD,gBAAM,UAAU,aAAa,SAAS,SAAS;AAC/C,iBAAO,YAAY,OACf,UACA,EAAE,OAAO,SAAS,SAAS,UAAU,GAAG,QAAQ,KAAA;AAAA,QACtD;AAAA,MAAA;AAAA,MAEF;AAAA,QACE,MAAM;AAAA,QACN,WAAW,CAAC,EAAE,cAAoC;AAChD,gBAAM,SAAS,aAAa,SAAS,QAAQ;AAC7C,iBAAO,WAAW,OACd,UACA,EAAE,OAAO,WAAY,SAAS,IAAK,GAAG,GAAG,QAAQ,KAAA;AAAA,QACvD;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
@@ -1,52 +1,98 @@
1
1
  import { clampScore } from "./standards-sdk.es119.js";
2
- import { readNumber, readSubjectMetrics, readBoolean } from "./standards-sdk.es178.js";
3
- import "./standards-sdk.es162.js";
4
- import "./standards-sdk.es175.js";
2
+ import { readSubjectAdditional, readNumber } from "./standards-sdk.es179.js";
3
+ import "./standards-sdk.es163.js";
5
4
  import "./standards-sdk.es176.js";
6
5
  import "./standards-sdk.es177.js";
7
- const DEFAULT_EXCLUDED_REGISTRIES = [
8
- "openrouter",
9
- "near-ai"
10
- ];
11
- function normalizeAvailability(subject, scoreScale, recencyWindowMinutes) {
12
- const metadata = subject.metadata;
13
- const rawScore = metadata ? readNumber(metadata, "availabilityScore") : null;
14
- if (rawScore !== null) {
15
- const ratio = scoreScale === "ratio" ? rawScore : scoreScale === "percent" ? rawScore / 100 : rawScore > 1 ? rawScore / 100 : rawScore;
16
- return { value: clampScore(ratio * 100), status: "ok" };
6
+ import "./standards-sdk.es178.js";
7
+ import { clampUnit } from "./standards-sdk.es164.js";
8
+ const DEFAULT_INCLUDED_REGISTRIES = ["agentverse", "uagent"];
9
+ const MISSING = { value: 0, status: "missing" };
10
+ function normalizeInsights(subject) {
11
+ const additional = readSubjectAdditional(subject);
12
+ const rating = readNumber(additional, "agentverseInsightsRating");
13
+ if (rating !== null) {
14
+ return { value: clampScore(rating / 5 * 100), status: "ok" };
17
15
  }
18
- const metrics = readSubjectMetrics(subject);
19
- const minsFromLastOnline = readNumber(metrics, "minsFromLastOnline");
20
- if (minsFromLastOnline !== null) {
21
- return {
22
- value: clampScore(100 * (1 - minsFromLastOnline / recencyWindowMinutes)),
23
- status: "ok"
24
- };
16
+ const proxies = [
17
+ readNumber(additional, "agentverseInsightsReadmeQualityScore"),
18
+ readNumber(additional, "agentverseInsightsReadmeUniquenessScore"),
19
+ readNumber(additional, "agentverseInsightsInteractionsScore")
20
+ ].filter((value) => value !== null);
21
+ if (proxies.length === 0) {
22
+ return MISSING;
25
23
  }
26
- const isOnline = readBoolean(metrics, "isOnline");
27
- if (isOnline !== null) {
28
- return { value: isOnline ? 100 : 0, status: "ok" };
29
- }
30
- return { value: 0, status: "missing" };
24
+ const mean = proxies.reduce((sum, value) => sum + value, 0) / proxies.length;
25
+ return { value: clampScore(mean * 100), status: "ok" };
26
+ }
27
+ function createAgentverseInsightsAdapter(options = {}) {
28
+ return {
29
+ id: "agentverse-insights",
30
+ weight: 1,
31
+ contributionMode: "scoped",
32
+ includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,
33
+ defaultComponentKey: "agentverse-insights.score",
34
+ components: [
35
+ { name: "score", normalize: ({ subject }) => normalizeInsights(subject) }
36
+ ]
37
+ };
31
38
  }
32
- function createAvailabilityAdapter(options = {}) {
33
- const scoreScale = options.scoreScale ?? "auto";
34
- const recencyWindowMinutes = options.recencyWindowMinutes ?? 1440;
39
+ function createAgentverseVerifierAdapter(options = {}) {
40
+ const interactionCap = options.interactionCap ?? 1e3;
41
+ const responseTimeCapSeconds = options.responseTimeCapSeconds ?? 30;
35
42
  return {
36
- id: "availability",
43
+ id: "agentverse-verifier",
37
44
  weight: 1,
38
- contributionMode: "universal",
39
- excludeRegistries: options.excludeRegistries ?? DEFAULT_EXCLUDED_REGISTRIES,
40
- defaultComponentKey: "availability.uptime",
45
+ contributionMode: "conditional",
46
+ includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,
47
+ defaultComponentKey: "agentverse-verifier.score",
41
48
  components: [
42
49
  {
43
- name: "uptime",
44
- normalize: ({ subject }) => normalizeAvailability(subject, scoreScale, recencyWindowMinutes)
50
+ name: "score",
51
+ nonScorableWhenUnavailable: true,
52
+ normalize: ({ subject }) => {
53
+ const additional = readSubjectAdditional(subject);
54
+ const recentInteractions = readNumber(
55
+ additional,
56
+ "agentverseInsightsVerifierRecentInteractions"
57
+ ) ?? 0;
58
+ const recentSuccesses = readNumber(
59
+ additional,
60
+ "agentverseInsightsVerifierRecentSuccessInteractions"
61
+ ) ?? 0;
62
+ const totalInteractions = readNumber(
63
+ additional,
64
+ "agentverseInsightsVerifierTotalInteractions"
65
+ ) ?? 0;
66
+ const totalSuccesses = readNumber(
67
+ additional,
68
+ "agentverseInsightsVerifierTotalSuccessInteractions"
69
+ ) ?? 0;
70
+ const useRecent = recentInteractions > 0;
71
+ const interactions = useRecent ? recentInteractions : totalInteractions;
72
+ const successes = useRecent ? recentSuccesses : totalSuccesses;
73
+ if (interactions <= 0) {
74
+ return MISSING;
75
+ }
76
+ const successRate = clampUnit(successes / interactions) * 100;
77
+ const avgResponseTime = readNumber(
78
+ additional,
79
+ "agentverseInsightsAvgResponseTime"
80
+ );
81
+ const responseFactor = avgResponseTime === null ? 1 : clampUnit(1 - avgResponseTime / responseTimeCapSeconds);
82
+ const volumeFactor = clampUnit(
83
+ Math.log1p(interactions) / Math.log1p(interactionCap)
84
+ );
85
+ return {
86
+ value: clampScore(successRate * responseFactor * volumeFactor),
87
+ status: "ok"
88
+ };
89
+ }
45
90
  }
46
91
  ]
47
92
  };
48
93
  }
49
94
  export {
50
- createAvailabilityAdapter
95
+ createAgentverseInsightsAdapter,
96
+ createAgentverseVerifierAdapter
51
97
  };
52
98
  //# sourceMappingURL=standards-sdk.es166.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"standards-sdk.es166.js","sources":["../../src/hcs-25/adapters/availability.ts"],"sourcesContent":["import { clampScore } from '../scoring';\nimport type {\n Hcs25AdapterDefinition,\n Hcs25NormalizedValue,\n Hcs25Subject,\n} from '../types';\nimport { readBoolean, readNumber, readSubjectMetrics } from '../signals';\n\n/**\n * Options for the availability adapter.\n */\nexport interface Hcs25AvailabilityAdapterOptions {\n /**\n * How to interpret `availabilityScore`. `auto` (the default) treats\n * values up to and including one as a ratio and larger values as an\n * already-normalized percent.\n */\n scoreScale?: 'ratio' | 'percent' | 'auto';\n /** Recency window in minutes for last-seen decay. Defaults to 1440. */\n recencyWindowMinutes?: number;\n /** Registries where reachability is not meaningful. */\n excludeRegistries?: readonly string[];\n}\n\nconst DEFAULT_EXCLUDED_REGISTRIES: readonly string[] = [\n 'openrouter',\n 'near-ai',\n];\n\nfunction normalizeAvailability(\n subject: Hcs25Subject,\n scoreScale: 'ratio' | 'percent' | 'auto',\n recencyWindowMinutes: number,\n): Hcs25NormalizedValue {\n const metadata = subject.metadata;\n const rawScore = metadata ? readNumber(metadata, 'availabilityScore') : null;\n if (rawScore !== null) {\n const ratio =\n scoreScale === 'ratio'\n ? rawScore\n : scoreScale === 'percent'\n ? rawScore / 100\n : rawScore > 1\n ? rawScore / 100\n : rawScore;\n return { value: clampScore(ratio * 100), status: 'ok' };\n }\n\n const metrics = readSubjectMetrics(subject);\n const minsFromLastOnline = readNumber(metrics, 'minsFromLastOnline');\n if (minsFromLastOnline !== null) {\n return {\n value: clampScore(100 * (1 - minsFromLastOnline / recencyWindowMinutes)),\n status: 'ok',\n };\n }\n\n const isOnline = readBoolean(metrics, 'isOnline');\n if (isOnline !== null) {\n return { value: isOnline ? 100 : 0, status: 'ok' };\n }\n\n return { value: 0, status: 'missing' };\n}\n\n/**\n * Creates the `availability` adapter: rewards reachable endpoints and\n * penalizes long offline windows using a linear 24-hour recency decay.\n */\nexport function createAvailabilityAdapter(\n options: Hcs25AvailabilityAdapterOptions = {},\n): Hcs25AdapterDefinition {\n const scoreScale = options.scoreScale ?? 'auto';\n const recencyWindowMinutes = options.recencyWindowMinutes ?? 1440;\n\n return {\n id: 'availability',\n weight: 1,\n contributionMode: 'universal',\n excludeRegistries: options.excludeRegistries ?? DEFAULT_EXCLUDED_REGISTRIES,\n defaultComponentKey: 'availability.uptime',\n components: [\n {\n name: 'uptime',\n normalize: ({ subject }) =>\n normalizeAvailability(subject, scoreScale, recencyWindowMinutes),\n },\n ],\n };\n}\n"],"names":[],"mappings":";;;;;;AAwBA,MAAM,8BAAiD;AAAA,EACrD;AAAA,EACA;AACF;AAEA,SAAS,sBACP,SACA,YACA,sBACsB;AACtB,QAAM,WAAW,QAAQ;AACzB,QAAM,WAAW,WAAW,WAAW,UAAU,mBAAmB,IAAI;AACxE,MAAI,aAAa,MAAM;AACrB,UAAM,QACJ,eAAe,UACX,WACA,eAAe,YACb,WAAW,MACX,WAAW,IACT,WAAW,MACX;AACV,WAAO,EAAE,OAAO,WAAW,QAAQ,GAAG,GAAG,QAAQ,KAAA;AAAA,EACnD;AAEA,QAAM,UAAU,mBAAmB,OAAO;AAC1C,QAAM,qBAAqB,WAAW,SAAS,oBAAoB;AACnE,MAAI,uBAAuB,MAAM;AAC/B,WAAO;AAAA,MACL,OAAO,WAAW,OAAO,IAAI,qBAAqB,qBAAqB;AAAA,MACvE,QAAQ;AAAA,IAAA;AAAA,EAEZ;AAEA,QAAM,WAAW,YAAY,SAAS,UAAU;AAChD,MAAI,aAAa,MAAM;AACrB,WAAO,EAAE,OAAO,WAAW,MAAM,GAAG,QAAQ,KAAA;AAAA,EAC9C;AAEA,SAAO,EAAE,OAAO,GAAG,QAAQ,UAAA;AAC7B;AAMO,SAAS,0BACd,UAA2C,IACnB;AACxB,QAAM,aAAa,QAAQ,cAAc;AACzC,QAAM,uBAAuB,QAAQ,wBAAwB;AAE7D,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,mBAAmB,QAAQ,qBAAqB;AAAA,IAChD,qBAAqB;AAAA,IACrB,YAAY;AAAA,MACV;AAAA,QACE,MAAM;AAAA,QACN,WAAW,CAAC,EAAE,QAAA,MACZ,sBAAsB,SAAS,YAAY,oBAAoB;AAAA,MAAA;AAAA,IACnE;AAAA,EACF;AAEJ;"}
1
+ {"version":3,"file":"standards-sdk.es166.js","sources":["../../src/hcs-25/adapters/agentverse.ts"],"sourcesContent":["import { clampScore } from '../scoring';\nimport type {\n Hcs25AdapterDefinition,\n Hcs25NormalizedValue,\n Hcs25Subject,\n} from '../types';\nimport {\n readNumber,\n readSubjectAdditional,\n type Hcs25JsonObject,\n} from '../signals';\nimport { clampUnit } from './normalization';\n\n/**\n * Options for the AgentVerse insights adapter.\n */\nexport interface Hcs25AgentverseInsightsAdapterOptions {\n /** Registries where AgentVerse insights apply. */\n includeRegistries?: readonly string[];\n}\n\n/**\n * Options for the AgentVerse verifier reliability adapter.\n */\nexport interface Hcs25AgentverseVerifierAdapterOptions {\n /** Interaction count cap for the volume confidence factor. Default 1000. */\n interactionCap?: number;\n /** Average response time (seconds) that maps to a zero factor. Default 30. */\n responseTimeCapSeconds?: number;\n /** Registries where AgentVerse verifier counters apply. */\n includeRegistries?: readonly string[];\n}\n\nconst DEFAULT_INCLUDED_REGISTRIES: readonly string[] = ['agentverse', 'uagent'];\n\nconst MISSING: Hcs25NormalizedValue = { value: 0, status: 'missing' };\n\nfunction normalizeInsights(subject: Hcs25Subject): Hcs25NormalizedValue {\n const additional: Hcs25JsonObject = readSubjectAdditional(subject);\n const rating = readNumber(additional, 'agentverseInsightsRating');\n if (rating !== null) {\n return { value: clampScore((rating / 5) * 100), status: 'ok' };\n }\n\n const proxies = [\n readNumber(additional, 'agentverseInsightsReadmeQualityScore'),\n readNumber(additional, 'agentverseInsightsReadmeUniquenessScore'),\n readNumber(additional, 'agentverseInsightsInteractionsScore'),\n ].filter((value): value is number => value !== null);\n\n if (proxies.length === 0) {\n return MISSING;\n }\n\n const mean = proxies.reduce((sum, value) => sum + value, 0) / proxies.length;\n return { value: clampScore(mean * 100), status: 'ok' };\n}\n\n/**\n * Creates the `agentverse-insights` adapter: converts marketplace \"insights\"\n * indicators into a single normalized component, preferring the explicit\n * rating (scaled from five) and falling back to the mean of the available\n * quality proxies.\n */\nexport function createAgentverseInsightsAdapter(\n options: Hcs25AgentverseInsightsAdapterOptions = {},\n): Hcs25AdapterDefinition {\n return {\n id: 'agentverse-insights',\n weight: 1,\n contributionMode: 'scoped',\n includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,\n defaultComponentKey: 'agentverse-insights.score',\n components: [\n { name: 'score', normalize: ({ subject }) => normalizeInsights(subject) },\n ],\n };\n}\n\n/**\n * Creates the `agentverse-verifier` adapter: converts verifier interaction\n * counters into a reliability score combining success rate, a response-time\n * penalty, and a volume confidence factor. Conditional contribution keeps\n * agents without verifier counters out of the denominator.\n */\nexport function createAgentverseVerifierAdapter(\n options: Hcs25AgentverseVerifierAdapterOptions = {},\n): Hcs25AdapterDefinition {\n const interactionCap = options.interactionCap ?? 1000;\n const responseTimeCapSeconds = options.responseTimeCapSeconds ?? 30;\n\n return {\n id: 'agentverse-verifier',\n weight: 1,\n contributionMode: 'conditional',\n includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,\n defaultComponentKey: 'agentverse-verifier.score',\n components: [\n {\n name: 'score',\n nonScorableWhenUnavailable: true,\n normalize: ({ subject }): Hcs25NormalizedValue => {\n const additional = readSubjectAdditional(subject);\n const recentInteractions =\n readNumber(\n additional,\n 'agentverseInsightsVerifierRecentInteractions',\n ) ?? 0;\n const recentSuccesses =\n readNumber(\n additional,\n 'agentverseInsightsVerifierRecentSuccessInteractions',\n ) ?? 0;\n const totalInteractions =\n readNumber(\n additional,\n 'agentverseInsightsVerifierTotalInteractions',\n ) ?? 0;\n const totalSuccesses =\n readNumber(\n additional,\n 'agentverseInsightsVerifierTotalSuccessInteractions',\n ) ?? 0;\n\n const useRecent = recentInteractions > 0;\n const interactions = useRecent\n ? recentInteractions\n : totalInteractions;\n const successes = useRecent ? recentSuccesses : totalSuccesses;\n\n if (interactions <= 0) {\n return MISSING;\n }\n\n const successRate = clampUnit(successes / interactions) * 100;\n const avgResponseTime = readNumber(\n additional,\n 'agentverseInsightsAvgResponseTime',\n );\n const responseFactor =\n avgResponseTime === null\n ? 1\n : clampUnit(1 - avgResponseTime / responseTimeCapSeconds);\n const volumeFactor = clampUnit(\n Math.log1p(interactions) / Math.log1p(interactionCap),\n );\n\n return {\n value: clampScore(successRate * responseFactor * volumeFactor),\n status: 'ok',\n };\n },\n },\n ],\n };\n}\n"],"names":[],"mappings":";;;;;;;AAiCA,MAAM,8BAAiD,CAAC,cAAc,QAAQ;AAE9E,MAAM,UAAgC,EAAE,OAAO,GAAG,QAAQ,UAAA;AAE1D,SAAS,kBAAkB,SAA6C;AACtE,QAAM,aAA8B,sBAAsB,OAAO;AACjE,QAAM,SAAS,WAAW,YAAY,0BAA0B;AAChE,MAAI,WAAW,MAAM;AACnB,WAAO,EAAE,OAAO,WAAY,SAAS,IAAK,GAAG,GAAG,QAAQ,KAAA;AAAA,EAC1D;AAEA,QAAM,UAAU;AAAA,IACd,WAAW,YAAY,sCAAsC;AAAA,IAC7D,WAAW,YAAY,yCAAyC;AAAA,IAChE,WAAW,YAAY,qCAAqC;AAAA,EAAA,EAC5D,OAAO,CAAC,UAA2B,UAAU,IAAI;AAEnD,MAAI,QAAQ,WAAW,GAAG;AACxB,WAAO;AAAA,EACT;AAEA,QAAM,OAAO,QAAQ,OAAO,CAAC,KAAK,UAAU,MAAM,OAAO,CAAC,IAAI,QAAQ;AACtE,SAAO,EAAE,OAAO,WAAW,OAAO,GAAG,GAAG,QAAQ,KAAA;AAClD;AAQO,SAAS,gCACd,UAAiD,IACzB;AACxB,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,mBAAmB,QAAQ,qBAAqB;AAAA,IAChD,qBAAqB;AAAA,IACrB,YAAY;AAAA,MACV,EAAE,MAAM,SAAS,WAAW,CAAC,EAAE,QAAA,MAAc,kBAAkB,OAAO,EAAA;AAAA,IAAE;AAAA,EAC1E;AAEJ;AAQO,SAAS,gCACd,UAAiD,IACzB;AACxB,QAAM,iBAAiB,QAAQ,kBAAkB;AACjD,QAAM,yBAAyB,QAAQ,0BAA0B;AAEjE,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,QAAQ;AAAA,IACR,kBAAkB;AAAA,IAClB,mBAAmB,QAAQ,qBAAqB;AAAA,IAChD,qBAAqB;AAAA,IACrB,YAAY;AAAA,MACV;AAAA,QACE,MAAM;AAAA,QACN,4BAA4B;AAAA,QAC5B,WAAW,CAAC,EAAE,cAAoC;AAChD,gBAAM,aAAa,sBAAsB,OAAO;AAChD,gBAAM,qBACJ;AAAA,YACE;AAAA,YACA;AAAA,UAAA,KACG;AACP,gBAAM,kBACJ;AAAA,YACE;AAAA,YACA;AAAA,UAAA,KACG;AACP,gBAAM,oBACJ;AAAA,YACE;AAAA,YACA;AAAA,UAAA,KACG;AACP,gBAAM,iBACJ;AAAA,YACE;AAAA,YACA;AAAA,UAAA,KACG;AAEP,gBAAM,YAAY,qBAAqB;AACvC,gBAAM,eAAe,YACjB,qBACA;AACJ,gBAAM,YAAY,YAAY,kBAAkB;AAEhD,cAAI,gBAAgB,GAAG;AACrB,mBAAO;AAAA,UACT;AAEA,gBAAM,cAAc,UAAU,YAAY,YAAY,IAAI;AAC1D,gBAAM,kBAAkB;AAAA,YACtB;AAAA,YACA;AAAA,UAAA;AAEF,gBAAM,iBACJ,oBAAoB,OAChB,IACA,UAAU,IAAI,kBAAkB,sBAAsB;AAC5D,gBAAM,eAAe;AAAA,YACnB,KAAK,MAAM,YAAY,IAAI,KAAK,MAAM,cAAc;AAAA,UAAA;AAGtD,iBAAO;AAAA,YACL,OAAO,WAAW,cAAc,iBAAiB,YAAY;AAAA,YAC7D,QAAQ;AAAA,UAAA;AAAA,QAEZ;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;"}
@@ -1,207 +1,52 @@
1
1
  import { clampScore } from "./standards-sdk.es119.js";
2
- import { readSubjectAdditional, readNumber, readString } from "./standards-sdk.es178.js";
3
- import "./standards-sdk.es162.js";
4
- import "./standards-sdk.es175.js";
2
+ import { readNumber, readSubjectMetrics, readBoolean } from "./standards-sdk.es179.js";
3
+ import "./standards-sdk.es163.js";
5
4
  import "./standards-sdk.es176.js";
6
5
  import "./standards-sdk.es177.js";
7
- const DEFAULT_MODEL_REGISTRIES = ["openrouter", "near-ai"];
8
- const MISSING = { value: 0, status: "missing" };
9
- const DEFAULT_MODEL_TIERS = [
10
- {
11
- score: 95,
12
- patterns: [
13
- "gpt-5",
14
- "gpt-4.5",
15
- "o3",
16
- "o4-mini",
17
- "claude-opus-4",
18
- "claude-4-opus",
19
- "gemini-3",
20
- "grok-4"
21
- ]
22
- },
23
- {
24
- score: 85,
25
- patterns: [
26
- "claude-sonnet-4",
27
- "claude-4-sonnet",
28
- "claude-3-7-sonnet",
29
- "gemini-2.5-pro",
30
- "deepseek-v3",
31
- "deepseek-r1",
32
- "llama-4-maverick",
33
- "qwen3-235b",
34
- "grok-3"
35
- ]
36
- },
37
- {
38
- score: 70,
39
- patterns: [
40
- "gpt-4o",
41
- "gemini-2.5-flash",
42
- "claude-haiku",
43
- "llama-4-scout",
44
- "qwen3-32b",
45
- "mistral-large"
46
- ]
47
- },
48
- {
49
- score: 55,
50
- patterns: ["llama-3.3", "llama-3.1", "qwen", "mistral", "gemma", "phi-"]
51
- },
52
- { score: 35, patterns: ["llama-2", "gpt-3.5", "gemini-1"] }
53
- ];
54
- const DEFAULT_MODEL_ID_KEYS = [
55
- "openrouterModelId",
56
- "modelId",
57
- "model"
6
+ import "./standards-sdk.es178.js";
7
+ const DEFAULT_EXCLUDED_REGISTRIES = [
8
+ "openrouter",
9
+ "near-ai"
58
10
  ];
59
- function createOpenRouterEvalsAdapter(options = {}) {
60
- const lowCoverageMultiplier = options.lowCoverageMultiplier ?? 0.5;
61
- return {
62
- id: "openrouter-evals",
63
- weight: 0.5,
64
- contributionMode: "scoped",
65
- includeRegistries: options.includeRegistries ?? DEFAULT_MODEL_REGISTRIES,
66
- defaultComponentKey: "openrouter-evals.score",
67
- components: [
68
- {
69
- name: "score",
70
- normalize: ({ subject }) => {
71
- const additional = readSubjectAdditional(subject);
72
- const score = readNumber(additional, "openrouterEvalScore");
73
- const status = readString(additional, "openrouterEvalStatus");
74
- if (score === null || status === "missing") {
75
- return MISSING;
76
- }
77
- const multiplier = status === "low-coverage" ? lowCoverageMultiplier : 1;
78
- return { value: clampScore(score * multiplier), status: "ok" };
79
- }
80
- }
81
- ]
82
- };
11
+ function normalizeAvailability(subject, scoreScale, recencyWindowMinutes) {
12
+ const metadata = subject.metadata;
13
+ const rawScore = metadata ? readNumber(metadata, "availabilityScore") : null;
14
+ if (rawScore !== null) {
15
+ const ratio = scoreScale === "ratio" ? rawScore : scoreScale === "percent" ? rawScore / 100 : rawScore > 1 ? rawScore / 100 : rawScore;
16
+ return { value: clampScore(ratio * 100), status: "ok" };
17
+ }
18
+ const metrics = readSubjectMetrics(subject);
19
+ const minsFromLastOnline = readNumber(metrics, "minsFromLastOnline");
20
+ if (minsFromLastOnline !== null) {
21
+ return {
22
+ value: clampScore(100 * (1 - minsFromLastOnline / recencyWindowMinutes)),
23
+ status: "ok"
24
+ };
25
+ }
26
+ const isOnline = readBoolean(metrics, "isOnline");
27
+ if (isOnline !== null) {
28
+ return { value: isOnline ? 100 : 0, status: "ok" };
29
+ }
30
+ return { value: 0, status: "missing" };
83
31
  }
84
- function createChatbotArenaAdapter(includeRegistries) {
32
+ function createAvailabilityAdapter(options = {}) {
33
+ const scoreScale = options.scoreScale ?? "auto";
34
+ const recencyWindowMinutes = options.recencyWindowMinutes ?? 1440;
85
35
  return {
86
- id: "chatbot-arena",
87
- weight: 6,
88
- contributionMode: "scoped",
89
- includeRegistries: includeRegistries ?? DEFAULT_MODEL_REGISTRIES,
90
- defaultComponentKey: "chatbot-arena.score",
91
- components: [
92
- {
93
- name: "score",
94
- normalize: ({ subject }) => {
95
- const additional = readSubjectAdditional(subject);
96
- const score = readNumber(additional, "chatbotArenaEvalScore");
97
- const status = readString(additional, "chatbotArenaEvalStatus");
98
- if (score === null || status !== "ok") {
99
- return MISSING;
100
- }
101
- return { value: clampScore(score), status: "ok" };
102
- }
103
- }
104
- ]
105
- };
106
- }
107
- function createHuggingFaceModelIndexAdapter(includeRegistries) {
108
- return {
109
- id: "huggingface-model-index",
110
- weight: 0.8,
111
- contributionMode: "conditional",
112
- includeRegistries: includeRegistries ?? DEFAULT_MODEL_REGISTRIES,
113
- defaultComponentKey: "huggingface-model-index.score",
114
- components: [
115
- {
116
- name: "score",
117
- nonScorableWhenUnavailable: true,
118
- normalize: ({ subject }) => {
119
- const additional = readSubjectAdditional(subject);
120
- const score = readNumber(additional, "huggingFaceEvalScore") ?? readNumber(additional, "huggingFaceSignalScore");
121
- const status = readString(additional, "huggingFaceEvalStatus");
122
- const mode = readString(additional, "huggingFaceEvalMode");
123
- if (score === null || status !== "ok" || mode === "missing") {
124
- return MISSING;
125
- }
126
- return { value: clampScore(score), status: "ok" };
127
- }
128
- }
129
- ]
130
- };
131
- }
132
- function createOpenLlmLeaderboardAdapter(includeRegistries) {
133
- return {
134
- id: "openllm-leaderboard",
36
+ id: "availability",
135
37
  weight: 1,
136
- contributionMode: "conditional",
137
- includeRegistries: includeRegistries ?? DEFAULT_MODEL_REGISTRIES,
138
- defaultComponentKey: "openllm-leaderboard.score",
139
- components: [
140
- {
141
- name: "score",
142
- nonScorableWhenUnavailable: true,
143
- normalize: ({ subject }) => {
144
- const additional = readSubjectAdditional(subject);
145
- const score = readNumber(additional, "openLlmEvalScore");
146
- const status = readString(additional, "openLlmEvalStatus");
147
- if (score === null || status !== "ok") {
148
- return MISSING;
149
- }
150
- return { value: clampScore(score), status: "ok" };
151
- }
152
- }
153
- ]
154
- };
155
- }
156
- function createModelTierAdapter(options = {}) {
157
- const tiers = options.tiers ?? DEFAULT_MODEL_TIERS;
158
- const defaultScore = options.defaultScore ?? 50;
159
- const modelIdKeys = options.modelIdKeys ?? DEFAULT_MODEL_ID_KEYS;
160
- return {
161
- id: "model-tier",
162
- weight: 2,
163
- contributionMode: "conditional",
164
- includeRegistries: options.includeRegistries ?? DEFAULT_MODEL_REGISTRIES,
165
- defaultComponentKey: "model-tier.score",
38
+ contributionMode: "universal",
39
+ excludeRegistries: options.excludeRegistries ?? DEFAULT_EXCLUDED_REGISTRIES,
40
+ defaultComponentKey: "availability.uptime",
166
41
  components: [
167
42
  {
168
- name: "score",
169
- nonScorableWhenUnavailable: true,
170
- normalize: ({ subject }) => {
171
- const additional = readSubjectAdditional(subject);
172
- const hasStrongCoverage = readString(additional, "openrouterEvalStatus") === "ok";
173
- const hasIndependentEvals = [
174
- "chatbotArenaEvalStatus",
175
- "huggingFaceEvalStatus",
176
- "openLlmEvalStatus"
177
- ].some((key) => readString(additional, key) === "ok");
178
- if (hasStrongCoverage || hasIndependentEvals) {
179
- return MISSING;
180
- }
181
- const modelId = modelIdKeys.map((key) => readString(additional, key)).find((value) => value !== null);
182
- if (modelId === null) {
183
- return MISSING;
184
- }
185
- const normalizedId = modelId.toLowerCase();
186
- const tier = tiers.find(
187
- (entry) => entry.patterns.some(
188
- (pattern) => normalizedId.includes(pattern.toLowerCase())
189
- )
190
- );
191
- return {
192
- value: clampScore(tier ? tier.score : defaultScore),
193
- status: "ok"
194
- };
195
- }
43
+ name: "uptime",
44
+ normalize: ({ subject }) => normalizeAvailability(subject, scoreScale, recencyWindowMinutes)
196
45
  }
197
46
  ]
198
47
  };
199
48
  }
200
49
  export {
201
- createChatbotArenaAdapter,
202
- createHuggingFaceModelIndexAdapter,
203
- createModelTierAdapter,
204
- createOpenLlmLeaderboardAdapter,
205
- createOpenRouterEvalsAdapter
50
+ createAvailabilityAdapter
206
51
  };
207
52
  //# sourceMappingURL=standards-sdk.es167.js.map