@antseed/node 0.1.0 → 0.1.1

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 (130) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/interfaces/seller-provider.d.ts +13 -1
  6. package/dist/interfaces/seller-provider.d.ts.map +1 -1
  7. package/dist/node.d.ts +13 -3
  8. package/dist/node.d.ts.map +1 -1
  9. package/dist/node.js +123 -15
  10. package/dist/node.js.map +1 -1
  11. package/dist/proxy/proxy-mux.d.ts +3 -1
  12. package/dist/proxy/proxy-mux.d.ts.map +1 -1
  13. package/dist/proxy/proxy-mux.js +9 -5
  14. package/dist/proxy/proxy-mux.js.map +1 -1
  15. package/dist/types/http.d.ts +1 -0
  16. package/dist/types/http.d.ts.map +1 -1
  17. package/dist/types/http.js +1 -1
  18. package/dist/types/http.js.map +1 -1
  19. package/package.json +14 -10
  20. package/contracts/AntseedEscrow.sol +0 -310
  21. package/contracts/MockUSDC.sol +0 -64
  22. package/contracts/README.md +0 -102
  23. package/src/config/encryption.test.ts +0 -49
  24. package/src/config/encryption.ts +0 -53
  25. package/src/config/plugin-config-manager.test.ts +0 -92
  26. package/src/config/plugin-config-manager.ts +0 -153
  27. package/src/config/plugin-loader.ts +0 -90
  28. package/src/discovery/announcer.ts +0 -169
  29. package/src/discovery/bootstrap.ts +0 -57
  30. package/src/discovery/default-metadata-resolver.ts +0 -18
  31. package/src/discovery/dht-health.ts +0 -136
  32. package/src/discovery/dht-node.ts +0 -191
  33. package/src/discovery/http-metadata-resolver.ts +0 -47
  34. package/src/discovery/index.ts +0 -15
  35. package/src/discovery/metadata-codec.ts +0 -453
  36. package/src/discovery/metadata-resolver.ts +0 -7
  37. package/src/discovery/metadata-server.ts +0 -73
  38. package/src/discovery/metadata-validator.ts +0 -172
  39. package/src/discovery/peer-lookup.ts +0 -122
  40. package/src/discovery/peer-metadata.ts +0 -34
  41. package/src/discovery/peer-selector.ts +0 -134
  42. package/src/discovery/profile-manager.ts +0 -131
  43. package/src/discovery/profile-search.ts +0 -100
  44. package/src/discovery/reputation-verifier.ts +0 -54
  45. package/src/index.ts +0 -61
  46. package/src/interfaces/buyer-router.ts +0 -21
  47. package/src/interfaces/plugin.ts +0 -36
  48. package/src/interfaces/seller-provider.ts +0 -81
  49. package/src/metering/index.ts +0 -6
  50. package/src/metering/receipt-generator.ts +0 -105
  51. package/src/metering/receipt-verifier.ts +0 -102
  52. package/src/metering/session-tracker.ts +0 -145
  53. package/src/metering/storage.ts +0 -600
  54. package/src/metering/token-counter.ts +0 -127
  55. package/src/metering/usage-aggregator.ts +0 -236
  56. package/src/node.ts +0 -1698
  57. package/src/p2p/connection-auth.ts +0 -152
  58. package/src/p2p/connection-manager.ts +0 -916
  59. package/src/p2p/handshake.ts +0 -162
  60. package/src/p2p/ice-config.ts +0 -59
  61. package/src/p2p/identity.ts +0 -110
  62. package/src/p2p/index.ts +0 -11
  63. package/src/p2p/keepalive.ts +0 -118
  64. package/src/p2p/message-protocol.ts +0 -171
  65. package/src/p2p/nat-traversal.ts +0 -169
  66. package/src/p2p/payment-codec.ts +0 -165
  67. package/src/p2p/payment-mux.ts +0 -153
  68. package/src/p2p/reconnect.ts +0 -117
  69. package/src/payments/balance-manager.ts +0 -77
  70. package/src/payments/buyer-payment-manager.ts +0 -414
  71. package/src/payments/disputes.ts +0 -72
  72. package/src/payments/evm/escrow-client.ts +0 -263
  73. package/src/payments/evm/keypair.ts +0 -31
  74. package/src/payments/evm/signatures.ts +0 -103
  75. package/src/payments/evm/wallet.ts +0 -42
  76. package/src/payments/index.ts +0 -50
  77. package/src/payments/settlement.ts +0 -40
  78. package/src/payments/types.ts +0 -79
  79. package/src/proxy/index.ts +0 -3
  80. package/src/proxy/provider-detection.ts +0 -78
  81. package/src/proxy/proxy-mux.ts +0 -173
  82. package/src/proxy/request-codec.ts +0 -294
  83. package/src/reputation/index.ts +0 -6
  84. package/src/reputation/rating-manager.ts +0 -118
  85. package/src/reputation/report-manager.ts +0 -91
  86. package/src/reputation/trust-engine.ts +0 -120
  87. package/src/reputation/trust-score.ts +0 -74
  88. package/src/reputation/uptime-tracker.ts +0 -155
  89. package/src/routing/default-router.ts +0 -75
  90. package/src/types/bittorrent-dht.d.ts +0 -19
  91. package/src/types/buyer.ts +0 -37
  92. package/src/types/capability.ts +0 -34
  93. package/src/types/connection.ts +0 -29
  94. package/src/types/http.ts +0 -20
  95. package/src/types/index.ts +0 -14
  96. package/src/types/metering.ts +0 -175
  97. package/src/types/nat-api.d.ts +0 -29
  98. package/src/types/peer-profile.ts +0 -25
  99. package/src/types/peer.ts +0 -62
  100. package/src/types/plugin-config.ts +0 -31
  101. package/src/types/protocol.ts +0 -162
  102. package/src/types/provider.ts +0 -40
  103. package/src/types/rating.ts +0 -23
  104. package/src/types/report.ts +0 -30
  105. package/src/types/seller.ts +0 -38
  106. package/src/types/staking.ts +0 -23
  107. package/src/utils/debug.ts +0 -30
  108. package/src/utils/hex.ts +0 -14
  109. package/tests/balance-manager.test.ts +0 -156
  110. package/tests/bootstrap.test.ts +0 -108
  111. package/tests/buyer-payment-manager.test.ts +0 -358
  112. package/tests/connection-auth.test.ts +0 -87
  113. package/tests/default-router.test.ts +0 -148
  114. package/tests/evm-keypair.test.ts +0 -173
  115. package/tests/identity.test.ts +0 -133
  116. package/tests/message-protocol.test.ts +0 -212
  117. package/tests/metadata-codec.test.ts +0 -165
  118. package/tests/metadata-validator.test.ts +0 -261
  119. package/tests/metering-storage.test.ts +0 -244
  120. package/tests/payment-codec.test.ts +0 -95
  121. package/tests/payment-mux.test.ts +0 -191
  122. package/tests/peer-selector.test.ts +0 -184
  123. package/tests/provider-detection.test.ts +0 -107
  124. package/tests/proxy-mux-security.test.ts +0 -38
  125. package/tests/receipt.test.ts +0 -215
  126. package/tests/reputation-integration.test.ts +0 -195
  127. package/tests/request-codec.test.ts +0 -144
  128. package/tests/token-counter.test.ts +0 -122
  129. package/tsconfig.json +0 -9
  130. package/vitest.config.ts +0 -7
@@ -1,120 +0,0 @@
1
- import { readFile, writeFile, mkdir } from 'node:fs/promises';
2
- import { join } from 'node:path';
3
- import type { PeerId } from '../types/peer.js';
4
- import type { TrustScore, TrustComponents } from './trust-score.js';
5
- import { DEFAULT_COMPONENTS, computeTrustScore } from './trust-score.js';
6
-
7
- export interface TrustEngineConfig {
8
- configDir: string;
9
- }
10
-
11
- export class TrustScoreEngine {
12
- private readonly configDir: string;
13
- private scores: Map<string, TrustScore> = new Map();
14
-
15
- constructor(config: TrustEngineConfig) {
16
- this.configDir = config.configDir;
17
- }
18
-
19
- /**
20
- * Update trust score for a peer with new component data.
21
- * Merges partial components with existing or defaults.
22
- */
23
- updateScore(peerId: PeerId, partialComponents: Partial<TrustComponents>): TrustScore {
24
- const existing = this.scores.get(peerId);
25
- const components: TrustComponents = {
26
- ...(existing?.components ?? DEFAULT_COMPONENTS),
27
- ...partialComponents,
28
- };
29
-
30
- const score: TrustScore = {
31
- peerId,
32
- score: computeTrustScore(components),
33
- components,
34
- updatedAt: Date.now(),
35
- };
36
-
37
- this.scores.set(peerId, score);
38
- return score;
39
- }
40
-
41
- getScore(peerId: PeerId): TrustScore | null {
42
- return this.scores.get(peerId) ?? null;
43
- }
44
-
45
- getAllScores(): TrustScore[] {
46
- return Array.from(this.scores.values());
47
- }
48
-
49
- /**
50
- * Compute report rate component for trust score.
51
- * Based on unique reporters with 30-day half-life decay.
52
- */
53
- computeReportComponent(reports: Array<{ reporterPeerId: string; timestamp: number }>): number {
54
- if (reports.length === 0) return 1.0;
55
-
56
- const now = Date.now();
57
- const HALF_LIFE_MS = 30 * 24 * 60 * 60 * 1000;
58
-
59
- const reporterWeights = new Map<string, number>();
60
- for (const r of reports) {
61
- const age = now - r.timestamp;
62
- const weight = Math.pow(0.5, age / HALF_LIFE_MS);
63
- const existing = reporterWeights.get(r.reporterPeerId) ?? 0;
64
- reporterWeights.set(r.reporterPeerId, Math.max(existing, weight));
65
- }
66
-
67
- const totalWeight = Array.from(reporterWeights.values()).reduce((a, b) => a + b, 0);
68
- return Math.max(0, 1 - totalWeight / 5);
69
- }
70
-
71
- /**
72
- * Compute peer rating component for trust score.
73
- * Uses Bayesian averaging: blend with global average until enough ratings.
74
- */
75
- computeRatingComponent(
76
- ratings: Array<{ overallScore: number; raterTrustScore?: number }>,
77
- globalAverage: number = 3.0,
78
- minRatings: number = 5,
79
- ): number {
80
- if (ratings.length === 0) return 0.5;
81
-
82
- let weightedSum = 0;
83
- let totalWeight = 0;
84
-
85
- for (const r of ratings) {
86
- const weight = r.raterTrustScore !== undefined ? r.raterTrustScore / 100 : 0.5;
87
- weightedSum += r.overallScore * weight;
88
- totalWeight += weight;
89
- }
90
-
91
- const rawAverage = totalWeight > 0 ? weightedSum / totalWeight : globalAverage;
92
-
93
- const n = ratings.length;
94
- const bayesian = (minRatings * globalAverage + n * rawAverage) / (minRatings + n);
95
-
96
- return Math.max(0, Math.min(1, (bayesian - 1) / 4));
97
- }
98
-
99
- async save(): Promise<void> {
100
- await mkdir(this.configDir, { recursive: true });
101
- const filePath = join(this.configDir, 'trust-scores.json');
102
- const data = Array.from(this.scores.values());
103
- await writeFile(filePath, JSON.stringify(data, null, 2), 'utf-8');
104
- }
105
-
106
- async load(): Promise<void> {
107
- const filePath = join(this.configDir, 'trust-scores.json');
108
- try {
109
- const raw = await readFile(filePath, 'utf-8');
110
- const data = JSON.parse(raw) as TrustScore[];
111
- this.scores.clear();
112
- for (const score of data) {
113
- this.scores.set(score.peerId, score);
114
- }
115
- } catch {
116
- // File doesn't exist or is invalid — start fresh
117
- this.scores.clear();
118
- }
119
- }
120
- }
@@ -1,74 +0,0 @@
1
- import type { PeerId } from '../types/peer.js';
2
-
3
- /**
4
- * Individual components that make up a trust score.
5
- * Each component is normalized to 0.0 - 1.0.
6
- */
7
- export interface TrustComponents {
8
- /** Successful delivery rate (completed requests / total requests) */
9
- deliveryRate: number;
10
- /** Inverse dispute rate (1 - disputes/total) */
11
- disputeRate: number;
12
- /** Uptime percentage over rolling window */
13
- uptimeRate: number;
14
- /** Response quality score from metering data */
15
- responseQuality: number;
16
- /** Weight based on staked amount (normalized) */
17
- stakeWeight: number;
18
- /** Aggregate peer ratings (normalized average) */
19
- peerRatings: number;
20
- /** Account age factor (logarithmic scale) */
21
- accountAge: number;
22
- }
23
-
24
- /**
25
- * Computed trust score for a peer.
26
- */
27
- export interface TrustScore {
28
- peerId: PeerId;
29
- /** Overall trust score 0-100 */
30
- score: number;
31
- /** Individual component scores */
32
- components: TrustComponents;
33
- /** When this score was last computed */
34
- updatedAt: number;
35
- }
36
-
37
- /** Default weights for trust score computation. */
38
- export const DEFAULT_TRUST_WEIGHTS: Record<keyof TrustComponents, number> = {
39
- deliveryRate: 0.25,
40
- disputeRate: 0.25,
41
- uptimeRate: 0.15,
42
- responseQuality: 0.15,
43
- stakeWeight: 0.10,
44
- peerRatings: 0.05,
45
- accountAge: 0.05,
46
- };
47
-
48
- /** Default component values for unknown metrics */
49
- export const DEFAULT_COMPONENTS: TrustComponents = {
50
- deliveryRate: 0.5,
51
- disputeRate: 0.5,
52
- uptimeRate: 0.5,
53
- responseQuality: 0.5,
54
- stakeWeight: 0.0,
55
- peerRatings: 0.5,
56
- accountAge: 0.0,
57
- };
58
-
59
- /**
60
- * Compute a trust score from components using weighted sum.
61
- * @returns Score from 0-100
62
- */
63
- export function computeTrustScore(
64
- components: TrustComponents,
65
- weights: Partial<Record<keyof TrustComponents, number>> = {}
66
- ): number {
67
- const w = { ...DEFAULT_TRUST_WEIGHTS, ...weights };
68
- let score = 0;
69
- for (const key of Object.keys(w) as Array<keyof TrustComponents>) {
70
- const component = Math.max(0, Math.min(1, components[key]));
71
- score += component * w[key];
72
- }
73
- return Math.round(score * 100 * 100) / 100; // 2 decimal places
74
- }
@@ -1,155 +0,0 @@
1
- import { EventEmitter } from 'node:events';
2
- import type { PeerId } from '../types/peer.js';
3
-
4
- export interface UptimeWindow {
5
- start: number;
6
- end: number;
7
- }
8
-
9
- export interface PeerUptimeRecord {
10
- peerId: PeerId;
11
- windows: UptimeWindow[];
12
- lastPingAt: number;
13
- }
14
-
15
- export interface UptimeTrackerConfig {
16
- /** How long since last ping before a peer is considered offline (ms). Default: 120_000 (2 min) */
17
- offlineThresholdMs?: number;
18
- /** Rolling window for uptime calculation (ms). Default: 7 * 24 * 60 * 60 * 1000 (7 days) */
19
- windowDurationMs?: number;
20
- }
21
-
22
- const DEFAULT_OFFLINE_THRESHOLD = 120_000;
23
- const DEFAULT_WINDOW_DURATION = 7 * 24 * 60 * 60 * 1000;
24
-
25
- export class UptimeTracker extends EventEmitter {
26
- private records: Map<string, PeerUptimeRecord> = new Map();
27
- private readonly offlineThresholdMs: number;
28
- private readonly windowDurationMs: number;
29
- private checkInterval: ReturnType<typeof setInterval> | null = null;
30
-
31
- constructor(config?: UptimeTrackerConfig) {
32
- super();
33
- this.offlineThresholdMs = config?.offlineThresholdMs ?? DEFAULT_OFFLINE_THRESHOLD;
34
- this.windowDurationMs = config?.windowDurationMs ?? DEFAULT_WINDOW_DURATION;
35
- }
36
-
37
- /**
38
- * Record a ping from a peer — marks them as online.
39
- */
40
- recordPing(peerId: PeerId): void {
41
- const now = Date.now();
42
- const record = this.records.get(peerId);
43
-
44
- if (!record) {
45
- // New peer — start first window
46
- this.records.set(peerId, {
47
- peerId,
48
- windows: [{ start: now, end: now }],
49
- lastPingAt: now,
50
- });
51
- this.emit('peer-online', peerId);
52
- return;
53
- }
54
-
55
- const lastWindow = record.windows[record.windows.length - 1];
56
- const timeSinceLastPing = now - record.lastPingAt;
57
-
58
- if (timeSinceLastPing > this.offlineThresholdMs) {
59
- // Was offline — start new window
60
- if (lastWindow) {
61
- lastWindow.end = record.lastPingAt;
62
- }
63
- record.windows.push({ start: now, end: now });
64
- this.emit('peer-online', peerId);
65
- } else if (lastWindow) {
66
- // Extend current window
67
- lastWindow.end = now;
68
- }
69
-
70
- record.lastPingAt = now;
71
- this.pruneOldWindows(record);
72
- }
73
-
74
- /**
75
- * Explicitly record a peer going offline.
76
- */
77
- recordOffline(peerId: PeerId): void {
78
- const record = this.records.get(peerId);
79
- if (!record) return;
80
-
81
- const lastWindow = record.windows[record.windows.length - 1];
82
- if (lastWindow) {
83
- lastWindow.end = Date.now();
84
- }
85
- this.emit('peer-offline', peerId);
86
- }
87
-
88
- /**
89
- * Calculate uptime rate for a peer over the rolling window.
90
- * @returns 0.0 to 1.0
91
- */
92
- getUptimeRate(peerId: PeerId): number {
93
- const record = this.records.get(peerId);
94
- if (!record || record.windows.length === 0) return 0;
95
-
96
- const now = Date.now();
97
- const windowStart = now - this.windowDurationMs;
98
- let totalUptime = 0;
99
-
100
- for (const w of record.windows) {
101
- const effectiveStart = Math.max(w.start, windowStart);
102
- const effectiveEnd = Math.min(w.end, now);
103
- if (effectiveEnd > effectiveStart) {
104
- totalUptime += effectiveEnd - effectiveStart;
105
- }
106
- }
107
-
108
- return Math.min(1, totalUptime / this.windowDurationMs);
109
- }
110
-
111
- /**
112
- * Get uptime rates for all tracked peers.
113
- */
114
- getAllUptimeRates(): Map<PeerId, number> {
115
- const rates = new Map<PeerId, number>();
116
- for (const record of this.records.values()) {
117
- rates.set(record.peerId, this.getUptimeRate(record.peerId));
118
- }
119
- return rates;
120
- }
121
-
122
- /**
123
- * Start periodic checking for peers that have gone offline.
124
- */
125
- startTracking(): void {
126
- if (this.checkInterval) return;
127
- this.checkInterval = setInterval(() => {
128
- const now = Date.now();
129
- for (const record of this.records.values()) {
130
- if (now - record.lastPingAt > this.offlineThresholdMs) {
131
- const lastWindow = record.windows[record.windows.length - 1];
132
- if (lastWindow && lastWindow.end === record.lastPingAt) {
133
- // Close the window — peer went offline
134
- this.emit('peer-offline', record.peerId);
135
- }
136
- }
137
- }
138
- }, this.offlineThresholdMs);
139
- }
140
-
141
- /**
142
- * Stop periodic tracking.
143
- */
144
- stopTracking(): void {
145
- if (this.checkInterval) {
146
- clearInterval(this.checkInterval);
147
- this.checkInterval = null;
148
- }
149
- }
150
-
151
- private pruneOldWindows(record: PeerUptimeRecord): void {
152
- const cutoff = Date.now() - this.windowDurationMs;
153
- record.windows = record.windows.filter(w => w.end > cutoff);
154
- }
155
- }
@@ -1,75 +0,0 @@
1
- import type { Router } from '../interfaces/buyer-router.js';
2
- import type { PeerInfo } from '../types/peer.js';
3
- import type { SerializedHttpRequest } from '../types/http.js';
4
-
5
- export interface DefaultRouterConfig {
6
- minReputation?: number; // Default: 50
7
- }
8
-
9
- export class DefaultRouter implements Router {
10
- private _minReputation: number;
11
- private _latencyMap = new Map<string, number>();
12
-
13
- constructor(config?: DefaultRouterConfig) {
14
- this._minReputation = config?.minReputation ?? 50;
15
- }
16
-
17
- selectPeer(_req: SerializedHttpRequest, peers: PeerInfo[]): PeerInfo | null {
18
- const eligible = peers.filter(
19
- (p) => !this._hasReputation(p) || this._effectiveReputation(p) >= this._minReputation
20
- );
21
- if (eligible.length === 0) return null;
22
-
23
- eligible.sort((a, b) => {
24
- const priceA = a.defaultInputUsdPerMillion ?? Infinity;
25
- const priceB = b.defaultInputUsdPerMillion ?? Infinity;
26
- if (priceA !== priceB) return priceA - priceB;
27
- // Prefer higher trust scores (descending)
28
- const trustA = this._effectiveReputation(a);
29
- const trustB = this._effectiveReputation(b);
30
- if (trustA !== trustB) return trustB - trustA;
31
- const latA = this._latencyMap.get(a.peerId) ?? Infinity;
32
- const latB = this._latencyMap.get(b.peerId) ?? Infinity;
33
- return latA - latB;
34
- });
35
-
36
- return eligible[0] ?? null;
37
- }
38
-
39
- onResult(peer: PeerInfo, result: { success: boolean; latencyMs: number; tokens: number }): void {
40
- if (result.success) {
41
- const prev = this._latencyMap.get(peer.peerId) ?? result.latencyMs;
42
- this._latencyMap.set(peer.peerId, prev * 0.7 + result.latencyMs * 0.3);
43
- }
44
- }
45
-
46
- private _effectiveReputation(peer: PeerInfo): number {
47
- if (this._isFiniteNonNegative(peer.onChainReputation)) {
48
- return peer.onChainReputation;
49
- }
50
- if (this._isFiniteNonNegative(peer.trustScore)) {
51
- return peer.trustScore;
52
- }
53
- if (this._isFiniteNonNegative(peer.reputationScore)) {
54
- return peer.reputationScore;
55
- }
56
- return 0;
57
- }
58
-
59
- private _hasReputation(peer: PeerInfo): boolean {
60
- if (this._isFiniteNonNegative(peer.onChainReputation)) {
61
- const sessionCount = this._isFiniteNonNegative(peer.onChainSessionCount) ? peer.onChainSessionCount : undefined;
62
- const disputeCount = this._isFiniteNonNegative(peer.onChainDisputeCount) ? peer.onChainDisputeCount : undefined;
63
- if (sessionCount !== undefined || disputeCount !== undefined) {
64
- return (sessionCount ?? 0) > 0 || (disputeCount ?? 0) > 0;
65
- }
66
- return true;
67
- }
68
-
69
- return this._isFiniteNonNegative(peer.trustScore) || this._isFiniteNonNegative(peer.reputationScore);
70
- }
71
-
72
- private _isFiniteNonNegative(value: number | undefined): value is number {
73
- return typeof value === 'number' && Number.isFinite(value) && value >= 0;
74
- }
75
- }
@@ -1,19 +0,0 @@
1
- declare module "bittorrent-dht" {
2
- import { EventEmitter } from "node:events";
3
-
4
- interface DHTOptions {
5
- bootstrap?: string[];
6
- }
7
-
8
- class DHT extends EventEmitter {
9
- constructor(options?: DHTOptions);
10
- listen(port: number, callback?: () => void): void;
11
- announce(infoHash: Buffer, port: number, callback?: (err?: Error) => void): void;
12
- lookup(infoHash: Buffer, callback?: () => void): void;
13
- destroy(callback?: () => void): void;
14
- address(): { port: number } | null;
15
- nodes: { toArray(): unknown[] };
16
- }
17
-
18
- export default DHT;
19
- }
@@ -1,37 +0,0 @@
1
- import type { ProviderType } from './metering.js';
2
-
3
- /**
4
- * Per-provider preferences for the buyer.
5
- */
6
- export interface BuyerProviderPreference {
7
- /** Provider type to route through P2P */
8
- type: ProviderType;
9
- /** Whether this provider is enabled for P2P routing */
10
- enabled: boolean;
11
- /** Maximum price per 1K tokens in USD cents the buyer is willing to pay. */
12
- maxPricePerKToken: number;
13
- }
14
-
15
- /**
16
- * Top-level buyer configuration.
17
- */
18
- export interface BuyerConfig {
19
- /** Whether buyer mode is enabled */
20
- enabled: boolean;
21
- /** Local proxy listen port. Default: 8377 */
22
- proxyPort: number;
23
- /** Local proxy listen host. Default: '127.0.0.1' */
24
- proxyHost: string;
25
- /** Per-provider preferences */
26
- providers: BuyerProviderPreference[];
27
- /** Minimum peer reputation score (0-100). Default: 50 */
28
- minPeerReputation: number;
29
- /** Maximum number of peers to maintain in the pool. Default: 10 */
30
- maxPoolSize: number;
31
- /** Health check interval in ms. Default: 30_000 */
32
- healthCheckIntervalMs: number;
33
- /** Timeout for requests forwarded to peers in ms. Default: 120_000 */
34
- requestTimeoutMs: number;
35
- /** Whether to automatically set env vars for CLI tools. Default: true */
36
- autoSetEnvVars: boolean;
37
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * Provider capability types — what a peer can offer beyond inference.
3
- */
4
- export type ProviderCapability =
5
- | 'inference'
6
- | 'agent'
7
- | 'skill'
8
- | 'tool'
9
- | 'embedding'
10
- | 'image-gen'
11
- | 'tts'
12
- | 'stt';
13
-
14
- /**
15
- * Pricing tier for an offering.
16
- */
17
- export interface PricingTier {
18
- unit: 'token' | 'request' | 'minute' | 'task';
19
- pricePerUnit: number;
20
- currency: 'USD';
21
- }
22
-
23
- /**
24
- * A discrete offering that a peer advertises.
25
- */
26
- export interface PeerOffering {
27
- capability: ProviderCapability;
28
- name: string;
29
- description: string;
30
- inputSchema?: Record<string, unknown>;
31
- outputSchema?: Record<string, unknown>;
32
- models?: string[];
33
- pricing: PricingTier;
34
- }
@@ -1,29 +0,0 @@
1
- import type { PeerId } from "./peer.js";
2
-
3
- /** Connection lifecycle states. */
4
- export enum ConnectionState {
5
- Connecting = "connecting",
6
- Open = "open",
7
- Authenticated = "authenticated",
8
- Closing = "closing",
9
- Closed = "closed",
10
- Failed = "failed",
11
- }
12
-
13
- /** Events emitted by a PeerConnection. */
14
- export interface ConnectionEvents {
15
- stateChange: (state: ConnectionState) => void;
16
- message: (data: Uint8Array) => void;
17
- error: (err: Error) => void;
18
- }
19
-
20
- /** Configuration for a single connection. */
21
- export interface ConnectionConfig {
22
- remotePeerId: PeerId;
23
- isInitiator: boolean;
24
- timeoutMs?: number;
25
- endpoint?: {
26
- host: string;
27
- port: number;
28
- };
29
- }
package/src/types/http.ts DELETED
@@ -1,20 +0,0 @@
1
- export interface SerializedHttpRequest {
2
- requestId: string;
3
- method: string;
4
- path: string;
5
- headers: Record<string, string>;
6
- body: Uint8Array;
7
- }
8
-
9
- export interface SerializedHttpResponse {
10
- requestId: string;
11
- statusCode: number;
12
- headers: Record<string, string>;
13
- body: Uint8Array;
14
- }
15
-
16
- export interface SerializedHttpResponseChunk {
17
- requestId: string;
18
- data: Uint8Array;
19
- done: boolean;
20
- }
@@ -1,14 +0,0 @@
1
- export * from './peer.js';
2
- export * from './protocol.js';
3
- export * from './connection.js';
4
- export * from './metering.js';
5
- export * from './provider.js';
6
- export * from './seller.js';
7
- export * from './buyer.js';
8
- export * from './http.js';
9
- export * from './capability.js';
10
- export * from './peer-profile.js';
11
- export * from './staking.js';
12
- export * from './report.js';
13
- export * from './rating.js';
14
- export * from './plugin-config.js';