@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.
- package/dist/browser/services/registry-broker/client/agent-network.d.ts +1118 -0
- package/dist/browser/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/browser/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/browser/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/client.d.ts +1 -0
- package/dist/browser/services/registry-broker/client.d.ts.map +1 -1
- package/dist/browser/standards-sdk.browser.js +176 -0
- package/dist/browser/standards-sdk.browser.js.map +1 -1
- package/dist/browser-root/services/registry-broker/client/agent-network.d.ts +1118 -0
- package/dist/browser-root/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/browser-root/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/client.d.ts +1 -0
- package/dist/browser-root/services/registry-broker/client.d.ts.map +1 -1
- package/dist/browser-root/standards-sdk.root-browser.js +471 -15
- package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
- package/dist/cjs/services/registry-broker/client/agent-network.d.ts +1118 -0
- package/dist/cjs/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client.d.ts +1 -0
- 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/services/registry-broker/client/agent-network.d.ts +1118 -0
- package/dist/es/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client.d.ts +1 -0
- package/dist/es/services/registry-broker/client.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +54 -27
- package/dist/es/standards-sdk.es.js.map +1 -1
- 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 +1 -1
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es110.js +1 -1
- package/dist/es/standards-sdk.es116.js +2 -2
- 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.es126.js +1 -1
- package/dist/es/standards-sdk.es132.js +3 -2
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +3 -3
- package/dist/es/standards-sdk.es148.js +1 -1
- package/dist/es/standards-sdk.es150.js +24 -15
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +440 -248
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +259 -4
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +4 -81
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +71 -77
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +80 -53
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +59 -2546
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +2547 -159
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +159 -7
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +3 -2
- package/dist/es/standards-sdk.es16.js.map +1 -1
- package/dist/es/standards-sdk.es160.js +7 -86
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +64 -43
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +57 -186
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +188 -20
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +22 -54
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +41 -78
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +81 -35
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +36 -191
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +191 -43
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +46 -39
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +37 -44
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +46 -39
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +29 -102
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +104 -36
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +43 -33
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +44 -72
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +65 -61
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +63 -39
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +44 -36
- package/dist/es/standards-sdk.es178.js.map +1 -1
- package/dist/es/standards-sdk.es179.js +36 -30
- package/dist/es/standards-sdk.es179.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +6 -5
- package/dist/es/standards-sdk.es18.js.map +1 -1
- package/dist/es/standards-sdk.es180.js +30 -34
- package/dist/es/standards-sdk.es180.js.map +1 -1
- package/dist/es/standards-sdk.es181.js +34 -48
- package/dist/es/standards-sdk.es181.js.map +1 -1
- package/dist/es/standards-sdk.es182.js +48 -138
- package/dist/es/standards-sdk.es182.js.map +1 -1
- package/dist/es/standards-sdk.es183.js +133 -37
- package/dist/es/standards-sdk.es183.js.map +1 -1
- package/dist/es/standards-sdk.es184.js +34 -12474
- package/dist/es/standards-sdk.es184.js.map +1 -1
- package/dist/es/standards-sdk.es185.js +12425 -615
- package/dist/es/standards-sdk.es185.js.map +1 -1
- package/dist/es/standards-sdk.es186.js +47 -102
- package/dist/es/standards-sdk.es186.js.map +1 -1
- package/dist/es/standards-sdk.es187.js +96 -58
- package/dist/es/standards-sdk.es187.js.map +1 -1
- package/dist/es/standards-sdk.es188.js +73 -48
- package/dist/es/standards-sdk.es188.js.map +1 -1
- package/dist/es/standards-sdk.es189.js +180 -61
- package/dist/es/standards-sdk.es189.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +4 -3
- package/dist/es/standards-sdk.es19.js.map +1 -1
- package/dist/es/standards-sdk.es190.js +659 -187
- package/dist/es/standards-sdk.es190.js.map +1 -1
- package/dist/es/standards-sdk.es197.js +71 -15
- package/dist/es/standards-sdk.es197.js.map +1 -1
- package/dist/es/standards-sdk.es198.js +14 -136
- package/dist/es/standards-sdk.es198.js.map +1 -1
- package/dist/es/standards-sdk.es199.js +104 -482
- package/dist/es/standards-sdk.es199.js.map +1 -1
- package/dist/es/standards-sdk.es200.js +480 -222
- package/dist/es/standards-sdk.es200.js.map +1 -1
- package/dist/es/standards-sdk.es201.js +239 -176
- package/dist/es/standards-sdk.es201.js.map +1 -1
- package/dist/es/standards-sdk.es202.js +178 -101
- package/dist/es/standards-sdk.es202.js.map +1 -1
- package/dist/es/standards-sdk.es203.js +75 -108
- package/dist/es/standards-sdk.es203.js.map +1 -1
- package/dist/es/standards-sdk.es204.js +116 -148
- package/dist/es/standards-sdk.es204.js.map +1 -1
- package/dist/es/standards-sdk.es205.js +146 -646
- package/dist/es/standards-sdk.es205.js.map +1 -1
- package/dist/es/standards-sdk.es206.js +661 -162
- package/dist/es/standards-sdk.es206.js.map +1 -1
- package/dist/es/standards-sdk.es207.js +156 -206
- package/dist/es/standards-sdk.es207.js.map +1 -1
- package/dist/es/standards-sdk.es208.js +219 -223
- package/dist/es/standards-sdk.es208.js.map +1 -1
- package/dist/es/standards-sdk.es209.js +242 -0
- package/dist/es/standards-sdk.es209.js.map +1 -0
- package/dist/es/standards-sdk.es22.js +1 -1
- package/dist/es/standards-sdk.es27.js +6 -5
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es30.js +1 -1
- package/dist/es/standards-sdk.es31.js +1 -1
- package/dist/es/standards-sdk.es35.js +4 -3
- package/dist/es/standards-sdk.es35.js.map +1 -1
- package/dist/es/standards-sdk.es36.js +3 -3
- package/dist/es/standards-sdk.es37.js +1 -1
- package/dist/es/standards-sdk.es4.js +1 -1
- package/dist/es/standards-sdk.es53.js +1 -1
- package/dist/es/standards-sdk.es56.js +1 -1
- package/dist/es/standards-sdk.es59.js +1 -1
- 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 +4 -3
- package/dist/es/standards-sdk.es67.js.map +1 -1
- 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 +1 -1
- package/dist/es/standards-sdk.es72.js +2 -2
- package/dist/es/standards-sdk.es75.js +3 -3
- package/dist/es/standards-sdk.es76.js +1 -1
- package/dist/es/standards-sdk.es78.js +1 -1
- package/dist/es/standards-sdk.es83.js +1 -1
- package/dist/es/standards-sdk.es84.js +3 -2
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +1 -1
- package/dist/es/standards-sdk.es88.js +1 -1
- package/dist/es/standards-sdk.es90.js +1 -1
- package/dist/es/standards-sdk.es94.js +3 -3
- package/dist/es/standards-sdk.es98.js +1 -1
- package/dist/es/standards-sdk.es99.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es164.js","sources":["../../src/hcs-25/adapters/
|
|
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 {
|
|
3
|
-
import "./standards-sdk.
|
|
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
|
|
8
|
-
|
|
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
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
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
|
|
17
|
-
|
|
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
|
|
18
|
+
function createAcpAdapter(options = {}) {
|
|
19
|
+
const volumeCap = options.volumeCap ?? 500;
|
|
20
|
+
const revenueCap = options.revenueCap ?? 1e4;
|
|
28
21
|
return {
|
|
29
|
-
id: "
|
|
30
|
-
weight:
|
|
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: "
|
|
51
|
-
|
|
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
|
|
54
|
-
|
|
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
|
-
|
|
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/
|
|
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 {
|
|
3
|
-
import "./standards-sdk.
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
function
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
if (
|
|
15
|
-
|
|
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
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return {
|
|
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
|
|
33
|
-
const
|
|
34
|
-
const
|
|
39
|
+
function createAgentverseVerifierAdapter(options = {}) {
|
|
40
|
+
const interactionCap = options.interactionCap ?? 1e3;
|
|
41
|
+
const responseTimeCapSeconds = options.responseTimeCapSeconds ?? 30;
|
|
35
42
|
return {
|
|
36
|
-
id: "
|
|
43
|
+
id: "agentverse-verifier",
|
|
37
44
|
weight: 1,
|
|
38
|
-
contributionMode: "
|
|
39
|
-
|
|
40
|
-
defaultComponentKey: "
|
|
45
|
+
contributionMode: "conditional",
|
|
46
|
+
includeRegistries: options.includeRegistries ?? DEFAULT_INCLUDED_REGISTRIES,
|
|
47
|
+
defaultComponentKey: "agentverse-verifier.score",
|
|
41
48
|
components: [
|
|
42
49
|
{
|
|
43
|
-
name: "
|
|
44
|
-
|
|
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
|
-
|
|
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/
|
|
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 {
|
|
3
|
-
import "./standards-sdk.
|
|
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
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
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
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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
|
|
32
|
+
function createAvailabilityAdapter(options = {}) {
|
|
33
|
+
const scoreScale = options.scoreScale ?? "auto";
|
|
34
|
+
const recencyWindowMinutes = options.recencyWindowMinutes ?? 1440;
|
|
85
35
|
return {
|
|
86
|
-
id: "
|
|
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: "
|
|
137
|
-
|
|
138
|
-
defaultComponentKey: "
|
|
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: "
|
|
169
|
-
|
|
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
|
-
|
|
202
|
-
createHuggingFaceModelIndexAdapter,
|
|
203
|
-
createModelTierAdapter,
|
|
204
|
-
createOpenLlmLeaderboardAdapter,
|
|
205
|
-
createOpenRouterEvalsAdapter
|
|
50
|
+
createAvailabilityAdapter
|
|
206
51
|
};
|
|
207
52
|
//# sourceMappingURL=standards-sdk.es167.js.map
|