@antseed/node 0.2.81 → 0.2.82
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/discovery/announcer.d.ts +0 -1
- package/dist/discovery/announcer.d.ts.map +1 -1
- package/dist/discovery/announcer.js +0 -3
- package/dist/discovery/announcer.js.map +1 -1
- package/dist/discovery/index.d.ts +0 -1
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +0 -1
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/peer-metadata.d.ts +0 -1
- package/dist/discovery/peer-metadata.d.ts.map +1 -1
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +12 -1
- package/dist/node.js.map +1 -1
- package/dist/payments/buyer-payment-manager.d.ts +1 -0
- package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
- package/dist/payments/buyer-payment-manager.js +6 -4
- package/dist/payments/buyer-payment-manager.js.map +1 -1
- package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -1
- package/dist/payments/buyer-payment-negotiator.js +10 -2
- package/dist/payments/buyer-payment-negotiator.js.map +1 -1
- package/dist/payments/evm/staking-client.d.ts +1 -0
- package/dist/payments/evm/staking-client.d.ts.map +1 -1
- package/dist/payments/evm/staking-client.js +7 -0
- package/dist/payments/evm/staking-client.js.map +1 -1
- package/dist/reputation/index.d.ts +0 -3
- package/dist/reputation/index.d.ts.map +1 -1
- package/dist/reputation/index.js +0 -2
- package/dist/reputation/index.js.map +1 -1
- package/dist/reputation/on-chain-reputation.d.ts +41 -0
- package/dist/reputation/on-chain-reputation.d.ts.map +1 -0
- package/dist/reputation/on-chain-reputation.js +95 -0
- package/dist/reputation/on-chain-reputation.js.map +1 -0
- package/dist/routing/default-router.d.ts +0 -1
- package/dist/routing/default-router.d.ts.map +1 -1
- package/dist/routing/default-router.js +11 -18
- package/dist/routing/default-router.js.map +1 -1
- package/dist/types/peer.d.ts +20 -2
- package/dist/types/peer.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import { computeOnChainReputationScore } from '../reputation/on-chain-reputation.js';
|
|
1
2
|
export class DefaultRouter {
|
|
2
3
|
_minReputation;
|
|
3
4
|
_latencyMap = new Map();
|
|
4
5
|
constructor(config) {
|
|
5
|
-
this._minReputation = config?.minReputation ??
|
|
6
|
+
this._minReputation = config?.minReputation ?? 0;
|
|
6
7
|
}
|
|
7
8
|
selectPeer(_req, peers) {
|
|
8
|
-
const eligible = peers.filter((p) =>
|
|
9
|
+
const eligible = peers.filter((p) => this._effectiveReputation(p) >= this._minReputation);
|
|
9
10
|
if (eligible.length === 0)
|
|
10
11
|
return null;
|
|
11
12
|
eligible.sort((a, b) => {
|
|
@@ -13,11 +14,11 @@ export class DefaultRouter {
|
|
|
13
14
|
const priceB = b.defaultInputUsdPerMillion ?? Infinity;
|
|
14
15
|
if (priceA !== priceB)
|
|
15
16
|
return priceA - priceB;
|
|
16
|
-
// Prefer higher
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
if (
|
|
20
|
-
return
|
|
17
|
+
// Prefer higher reputation scores (descending)
|
|
18
|
+
const reputationA = this._effectiveReputation(a);
|
|
19
|
+
const reputationB = this._effectiveReputation(b);
|
|
20
|
+
if (reputationA !== reputationB)
|
|
21
|
+
return reputationB - reputationA;
|
|
21
22
|
const latA = this._latencyMap.get(a.peerId) ?? Infinity;
|
|
22
23
|
const latB = this._latencyMap.get(b.peerId) ?? Infinity;
|
|
23
24
|
return latA - latB;
|
|
@@ -31,23 +32,15 @@ export class DefaultRouter {
|
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
_effectiveReputation(peer) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (this._isFiniteNonNegative(peer.trustScore)) {
|
|
38
|
-
return peer.trustScore;
|
|
35
|
+
const onChainScore = computeOnChainReputationScore(peer);
|
|
36
|
+
if (onChainScore != null) {
|
|
37
|
+
return onChainScore;
|
|
39
38
|
}
|
|
40
39
|
if (this._isFiniteNonNegative(peer.reputationScore)) {
|
|
41
40
|
return peer.reputationScore;
|
|
42
41
|
}
|
|
43
42
|
return 0;
|
|
44
43
|
}
|
|
45
|
-
_hasReputation(peer) {
|
|
46
|
-
if (this._isFiniteNonNegative(peer.onChainChannelCount)) {
|
|
47
|
-
return (peer.onChainChannelCount ?? 0) > 0 || (peer.onChainGhostCount ?? 0) > 0;
|
|
48
|
-
}
|
|
49
|
-
return this._isFiniteNonNegative(peer.trustScore) || this._isFiniteNonNegative(peer.reputationScore);
|
|
50
|
-
}
|
|
51
44
|
_isFiniteNonNegative(value) {
|
|
52
45
|
return typeof value === 'number' && Number.isFinite(value) && value >= 0;
|
|
53
46
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-router.js","sourceRoot":"","sources":["../../src/routing/default-router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default-router.js","sourceRoot":"","sources":["../../src/routing/default-router.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AAMrF,MAAM,OAAO,aAAa;IAChB,cAAc,CAAS;IACvB,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEhD,YAAY,MAA4B;QACtC,IAAI,CAAC,cAAc,GAAG,MAAM,EAAE,aAAa,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,UAAU,CAAC,IAA2B,EAAE,KAAiB;QACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,CAAC,CAAC,yBAAyB,IAAI,QAAQ,CAAC;YACvD,MAAM,MAAM,GAAG,CAAC,CAAC,yBAAyB,IAAI,QAAQ,CAAC;YACvD,IAAI,MAAM,KAAK,MAAM;gBAAE,OAAO,MAAM,GAAG,MAAM,CAAC;YAC9C,+CAA+C;YAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,WAAW,KAAK,WAAW;gBAAE,OAAO,WAAW,GAAG,WAAW,CAAC;YAClE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;YACxD,OAAO,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,IAAc,EAAE,MAA+D;QACtF,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC;YACnE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,GAAG,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,IAAc;QACzC,MAAM,YAAY,GAAG,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAEO,oBAAoB,CAAC,KAAyB;QACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF"}
|
package/dist/types/peer.d.ts
CHANGED
|
@@ -67,8 +67,21 @@ export interface PeerInfo {
|
|
|
67
67
|
maxConcurrency?: number;
|
|
68
68
|
/** Current number of requests the peer is handling. */
|
|
69
69
|
currentLoad?: number;
|
|
70
|
-
/**
|
|
71
|
-
|
|
70
|
+
/**
|
|
71
|
+
* On-chain ERC-8004 agent ID from `AntseedStaking.getAgentId`.
|
|
72
|
+
* Read by the buyer directly from the chain.
|
|
73
|
+
*/
|
|
74
|
+
onChainAgentId?: number;
|
|
75
|
+
/**
|
|
76
|
+
* On-chain seller stake in micro-USDC from `AntseedStaking.getStake`.
|
|
77
|
+
* Read by the buyer directly from the chain.
|
|
78
|
+
*/
|
|
79
|
+
onChainStakeUsdcMicros?: number;
|
|
80
|
+
/**
|
|
81
|
+
* Buyer-computed on-chain reputation score (0-100), derived from the
|
|
82
|
+
* on-chain stats below and cached for non-routing UI consumers.
|
|
83
|
+
*/
|
|
84
|
+
onChainReputationScore?: number;
|
|
72
85
|
/**
|
|
73
86
|
* On-chain settled channel count from `AntseedChannels.getAgentStats`.
|
|
74
87
|
* Read by the buyer directly from the chain — never trusted from peer metadata.
|
|
@@ -90,6 +103,11 @@ export interface PeerInfo {
|
|
|
90
103
|
* from `AntseedChannels.getAgentStats.lastSettledAt`. Read by the buyer from chain.
|
|
91
104
|
*/
|
|
92
105
|
onChainLastSettledAtSec?: number;
|
|
106
|
+
/**
|
|
107
|
+
* Unix seconds when the seller first staked in `AntseedStaking.sellers`.
|
|
108
|
+
* Read by the buyer from chain and used as a small maturity signal.
|
|
109
|
+
*/
|
|
110
|
+
onChainStakedAtSec?: number;
|
|
93
111
|
/**
|
|
94
112
|
* Unix ms when the buyer last refreshed on-chain stats for this peer.
|
|
95
113
|
* Used to throttle repeat `getAgentStats` calls across discovery cycles.
|
package/dist/types/peer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../src/types/peer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,MAAM,WAAW,yBAAyB;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,yBAAyB,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;CAChD;AAED,sCAAsC;AACtC,MAAM,WAAW,QAAQ;IACvB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC7D,0DAA0D;IAC1D,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;IAC/E,0DAA0D;IAC1D,2BAA2B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qCAAqC,CAAC,CAAC;IACpF,sEAAsE;IACtE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,uEAAuE;IACvE,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,6EAA6E;IAC7E,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,
|
|
1
|
+
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../src/types/peer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAElE;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,MAAM,WAAW,yBAAyB;IACxC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,yBAAyB,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;CAChD;AAED,sCAAsC;AACtC,MAAM,WAAW,QAAQ;IACvB,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,gCAAgC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAC7D,0DAA0D;IAC1D,yBAAyB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kCAAkC,CAAC,CAAC;IAC/E,0DAA0D;IAC1D,2BAA2B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qCAAqC,CAAC,CAAC;IACpF,sEAAsE;IACtE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,uEAAuE;IACvE,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,6EAA6E;IAC7E,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@antseed/node",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.82",
|
|
4
4
|
"description": "Antseed Network protocol SDK — P2P inference marketplace",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"ethers": "~6.16.0",
|
|
46
46
|
"node-datachannel": "^0.7.0",
|
|
47
47
|
"tokenx": "^1.3.0",
|
|
48
|
-
"@antseed/api-adapter": "0.1.
|
|
48
|
+
"@antseed/api-adapter": "0.1.38"
|
|
49
49
|
},
|
|
50
50
|
"optionalDependencies": {
|
|
51
51
|
"keytar": "^7.9.0"
|