@antseed/node 0.2.26 → 0.2.28
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/README.md +85 -11
- package/dist/buyer-request-handler.d.ts +41 -0
- package/dist/buyer-request-handler.d.ts.map +1 -0
- package/dist/buyer-request-handler.js +254 -0
- package/dist/buyer-request-handler.js.map +1 -0
- package/dist/discovery/announcer.d.ts +5 -2
- package/dist/discovery/announcer.d.ts.map +1 -1
- package/dist/discovery/announcer.js +11 -14
- package/dist/discovery/announcer.js.map +1 -1
- package/dist/discovery/index.d.ts +0 -2
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +0 -2
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/metadata-codec.d.ts +2 -2
- package/dist/discovery/metadata-codec.d.ts.map +1 -1
- package/dist/discovery/metadata-codec.js +47 -72
- package/dist/discovery/metadata-codec.js.map +1 -1
- package/dist/discovery/metadata-validator.js +6 -6
- package/dist/discovery/metadata-validator.js.map +1 -1
- package/dist/discovery/peer-lookup.d.ts.map +1 -1
- package/dist/discovery/peer-lookup.js +1 -2
- package/dist/discovery/peer-lookup.js.map +1 -1
- package/dist/discovery/peer-metadata.d.ts +3 -5
- package/dist/discovery/peer-metadata.d.ts.map +1 -1
- package/dist/discovery/peer-metadata.js +1 -1
- package/dist/discovery/reputation-verifier.d.ts +2 -22
- package/dist/discovery/reputation-verifier.d.ts.map +1 -1
- package/dist/discovery/reputation-verifier.js +2 -24
- package/dist/discovery/reputation-verifier.js.map +1 -1
- package/dist/discovery/stats-verifier.d.ts +27 -0
- package/dist/discovery/stats-verifier.d.ts.map +1 -0
- package/dist/discovery/stats-verifier.js +38 -0
- package/dist/discovery/stats-verifier.js.map +1 -0
- package/dist/index.d.ts +17 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -3
- package/dist/index.js.map +1 -1
- package/dist/metering/index.d.ts +1 -0
- package/dist/metering/index.d.ts.map +1 -1
- package/dist/metering/index.js +1 -0
- package/dist/metering/index.js.map +1 -1
- package/dist/metering/receipt-generator.d.ts +4 -4
- package/dist/metering/receipt-generator.d.ts.map +1 -1
- package/dist/metering/receipt-verifier.d.ts +6 -6
- package/dist/metering/receipt-verifier.d.ts.map +1 -1
- package/dist/metering/receipt-verifier.js +1 -1
- package/dist/metering/seller-session-tracker.d.ts +91 -0
- package/dist/metering/seller-session-tracker.d.ts.map +1 -0
- package/dist/metering/seller-session-tracker.js +261 -0
- package/dist/metering/seller-session-tracker.js.map +1 -0
- package/dist/metering/storage.d.ts +11 -5
- package/dist/metering/storage.d.ts.map +1 -1
- package/dist/metering/storage.js +28 -80
- package/dist/metering/storage.js.map +1 -1
- package/dist/node.d.ts +83 -104
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +313 -1026
- package/dist/node.js.map +1 -1
- package/dist/p2p/connection-auth.d.ts +2 -1
- package/dist/p2p/connection-auth.d.ts.map +1 -1
- package/dist/p2p/connection-auth.js +6 -6
- package/dist/p2p/connection-auth.js.map +1 -1
- package/dist/p2p/connection-manager.d.ts +3 -2
- package/dist/p2p/connection-manager.d.ts.map +1 -1
- package/dist/p2p/connection-manager.js +12 -6
- package/dist/p2p/connection-manager.js.map +1 -1
- package/dist/p2p/identity.d.ts +44 -13
- package/dist/p2p/identity.d.ts.map +1 -1
- package/dist/p2p/identity.js +103 -49
- package/dist/p2p/identity.js.map +1 -1
- package/dist/p2p/index.d.ts +1 -3
- package/dist/p2p/index.d.ts.map +1 -1
- package/dist/p2p/index.js +1 -3
- package/dist/p2p/index.js.map +1 -1
- package/dist/p2p/payment-codec.d.ts +9 -19
- package/dist/p2p/payment-codec.d.ts.map +1 -1
- package/dist/p2p/payment-codec.js +41 -89
- package/dist/p2p/payment-codec.js.map +1 -1
- package/dist/p2p/payment-mux.d.ts +14 -29
- package/dist/p2p/payment-mux.d.ts.map +1 -1
- package/dist/p2p/payment-mux.js +41 -79
- package/dist/p2p/payment-mux.js.map +1 -1
- package/dist/payments/balance-manager.d.ts +2 -2
- package/dist/payments/balance-manager.d.ts.map +1 -1
- package/dist/payments/balance-manager.js +5 -5
- package/dist/payments/balance-manager.js.map +1 -1
- package/dist/payments/buyer-payment-manager.d.ts +157 -83
- package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
- package/dist/payments/buyer-payment-manager.js +573 -204
- package/dist/payments/buyer-payment-manager.js.map +1 -1
- package/dist/payments/buyer-payment-negotiator.d.ts +84 -0
- package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -0
- package/dist/payments/buyer-payment-negotiator.js +624 -0
- package/dist/payments/buyer-payment-negotiator.js.map +1 -0
- package/dist/payments/chain-config.d.ts +44 -0
- package/dist/payments/chain-config.d.ts.map +1 -0
- package/dist/payments/chain-config.js +70 -0
- package/dist/payments/chain-config.js.map +1 -0
- package/dist/payments/channel-session-state.d.ts +13 -0
- package/dist/payments/channel-session-state.d.ts.map +1 -0
- package/dist/payments/channel-session-state.js +25 -0
- package/dist/payments/channel-session-state.js.map +1 -0
- package/dist/payments/channel-store.d.ts +87 -0
- package/dist/payments/channel-store.d.ts.map +1 -0
- package/dist/payments/channel-store.js +276 -0
- package/dist/payments/channel-store.js.map +1 -0
- package/dist/payments/evm/ants-token-client.d.ts +16 -0
- package/dist/payments/evm/ants-token-client.d.ts.map +1 -0
- package/dist/payments/evm/ants-token-client.js +65 -0
- package/dist/payments/evm/ants-token-client.js.map +1 -0
- package/dist/payments/evm/base-evm-client.d.ts +22 -0
- package/dist/payments/evm/base-evm-client.d.ts.map +1 -0
- package/dist/payments/evm/base-evm-client.js +71 -0
- package/dist/payments/evm/base-evm-client.js.map +1 -0
- package/dist/payments/evm/channels-client.d.ts +51 -0
- package/dist/payments/evm/channels-client.d.ts.map +1 -0
- package/dist/payments/evm/channels-client.js +101 -0
- package/dist/payments/evm/channels-client.js.map +1 -0
- package/dist/payments/evm/deposits-client.d.ts +30 -0
- package/dist/payments/evm/deposits-client.d.ts.map +1 -0
- package/dist/payments/evm/deposits-client.js +78 -0
- package/dist/payments/evm/deposits-client.js.map +1 -0
- package/dist/payments/evm/emissions-client.d.ts +22 -0
- package/dist/payments/evm/emissions-client.d.ts.map +1 -0
- package/dist/payments/evm/emissions-client.js +65 -0
- package/dist/payments/evm/emissions-client.js.map +1 -0
- package/dist/payments/evm/escrow-client.d.ts +57 -36
- package/dist/payments/evm/escrow-client.d.ts.map +1 -1
- package/dist/payments/evm/escrow-client.js +200 -93
- package/dist/payments/evm/escrow-client.js.map +1 -1
- package/dist/payments/evm/identity-client.d.ts +21 -0
- package/dist/payments/evm/identity-client.d.ts.map +1 -0
- package/dist/payments/evm/identity-client.js +68 -0
- package/dist/payments/evm/identity-client.js.map +1 -0
- package/dist/payments/evm/keypair.d.ts +3 -14
- package/dist/payments/evm/keypair.d.ts.map +1 -1
- package/dist/payments/evm/keypair.js +4 -20
- package/dist/payments/evm/keypair.js.map +1 -1
- package/dist/payments/evm/sessions-client.d.ts +30 -0
- package/dist/payments/evm/sessions-client.d.ts.map +1 -0
- package/dist/payments/evm/sessions-client.js +61 -0
- package/dist/payments/evm/sessions-client.js.map +1 -0
- package/dist/payments/evm/signatures.d.ts +54 -10
- package/dist/payments/evm/signatures.d.ts.map +1 -1
- package/dist/payments/evm/signatures.js +80 -54
- package/dist/payments/evm/signatures.js.map +1 -1
- package/dist/payments/evm/staking-client.d.ts +24 -0
- package/dist/payments/evm/staking-client.d.ts.map +1 -0
- package/dist/payments/evm/staking-client.js +54 -0
- package/dist/payments/evm/staking-client.js.map +1 -0
- package/dist/payments/evm/stats-client.d.ts +20 -0
- package/dist/payments/evm/stats-client.d.ts.map +1 -0
- package/dist/payments/evm/stats-client.js +25 -0
- package/dist/payments/evm/stats-client.js.map +1 -0
- package/dist/payments/evm/subpool-client.d.ts +30 -0
- package/dist/payments/evm/subpool-client.d.ts.map +1 -0
- package/dist/payments/evm/subpool-client.js +158 -0
- package/dist/payments/evm/subpool-client.js.map +1 -0
- package/dist/payments/index.d.ts +29 -9
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +27 -9
- package/dist/payments/index.js.map +1 -1
- package/dist/payments/pricing.d.ts +25 -0
- package/dist/payments/pricing.d.ts.map +1 -0
- package/dist/payments/pricing.js +33 -0
- package/dist/payments/pricing.js.map +1 -0
- package/dist/payments/readiness.d.ts +13 -0
- package/dist/payments/readiness.d.ts.map +1 -0
- package/dist/payments/readiness.js +57 -0
- package/dist/payments/readiness.js.map +1 -0
- package/dist/payments/seller-payment-manager.d.ts +101 -36
- package/dist/payments/seller-payment-manager.d.ts.map +1 -1
- package/dist/payments/seller-payment-manager.js +612 -120
- package/dist/payments/seller-payment-manager.js.map +1 -1
- package/dist/payments/session-store.d.ts +68 -0
- package/dist/payments/session-store.d.ts.map +1 -0
- package/dist/payments/session-store.js +272 -0
- package/dist/payments/session-store.js.map +1 -0
- package/dist/payments/types.d.ts +5 -3
- package/dist/payments/types.d.ts.map +1 -1
- package/dist/payments/usdc-utils.d.ts +9 -0
- package/dist/payments/usdc-utils.d.ts.map +1 -0
- package/dist/payments/usdc-utils.js +17 -0
- package/dist/payments/usdc-utils.js.map +1 -0
- package/dist/proxy/proxy-mux.d.ts.map +1 -1
- package/dist/proxy/proxy-mux.js +3 -2
- package/dist/proxy/proxy-mux.js.map +1 -1
- package/dist/proxy/request-codec.d.ts.map +1 -1
- package/dist/proxy/request-codec.js +3 -0
- package/dist/proxy/request-codec.js.map +1 -1
- package/dist/reputation/rating-manager.d.ts.map +1 -1
- package/dist/reputation/rating-manager.js +2 -4
- package/dist/reputation/rating-manager.js.map +1 -1
- package/dist/reputation/report-manager.d.ts.map +1 -1
- package/dist/reputation/report-manager.js +2 -4
- package/dist/reputation/report-manager.js.map +1 -1
- package/dist/routing/default-router.d.ts.map +1 -1
- package/dist/routing/default-router.js +4 -9
- package/dist/routing/default-router.js.map +1 -1
- package/dist/seller-request-handler.d.ts +54 -0
- package/dist/seller-request-handler.d.ts.map +1 -0
- package/dist/seller-request-handler.js +359 -0
- package/dist/seller-request-handler.js.map +1 -0
- package/dist/storage/migrate.d.ts +13 -0
- package/dist/storage/migrate.d.ts.map +1 -0
- package/dist/storage/migrate.js +28 -0
- package/dist/storage/migrate.js.map +1 -0
- package/dist/storage/migrations/channels/001_create_tables.d.ts +3 -0
- package/dist/storage/migrations/channels/001_create_tables.d.ts.map +1 -0
- package/dist/storage/migrations/channels/001_create_tables.js +45 -0
- package/dist/storage/migrations/channels/001_create_tables.js.map +1 -0
- package/dist/storage/migrations/channels/002_add_auth_sig_columns.d.ts +3 -0
- package/dist/storage/migrations/channels/002_add_auth_sig_columns.d.ts.map +1 -0
- package/dist/storage/migrations/channels/002_add_auth_sig_columns.js +19 -0
- package/dist/storage/migrations/channels/002_add_auth_sig_columns.js.map +1 -0
- package/dist/storage/migrations/channels/index.d.ts +3 -0
- package/dist/storage/migrations/channels/index.d.ts.map +1 -0
- package/dist/storage/migrations/channels/index.js +4 -0
- package/dist/storage/migrations/channels/index.js.map +1 -0
- package/dist/storage/migrations/metering/001_create_tables.d.ts +3 -0
- package/dist/storage/migrations/metering/001_create_tables.d.ts.map +1 -0
- package/dist/storage/migrations/metering/001_create_tables.js +80 -0
- package/dist/storage/migrations/metering/001_create_tables.js.map +1 -0
- package/dist/storage/migrations/metering/index.d.ts +3 -0
- package/dist/storage/migrations/metering/index.d.ts.map +1 -0
- package/dist/storage/migrations/metering/index.js +3 -0
- package/dist/storage/migrations/metering/index.js.map +1 -0
- package/dist/types/capability.d.ts +1 -1
- package/dist/types/http.d.ts +2 -0
- package/dist/types/http.d.ts.map +1 -1
- package/dist/types/http.js +2 -0
- package/dist/types/http.js.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/metering.d.ts +2 -2
- package/dist/types/metering.d.ts.map +1 -1
- package/dist/types/peer.d.ts +10 -11
- package/dist/types/peer.d.ts.map +1 -1
- package/dist/types/peer.js +7 -3
- package/dist/types/peer.js.map +1 -1
- package/dist/types/protocol.d.ts +32 -97
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +5 -10
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/rating.d.ts +1 -1
- package/dist/types/rating.d.ts.map +1 -1
- package/dist/types/report.d.ts +1 -1
- package/dist/types/report.d.ts.map +1 -1
- package/dist/utils/response-usage.d.ts +10 -0
- package/dist/utils/response-usage.d.ts.map +1 -0
- package/dist/utils/response-usage.js +34 -0
- package/dist/utils/response-usage.js.map +1 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -115,8 +115,8 @@ At a high level, `@antseed/node` currently enforces:
|
|
|
115
115
|
- Signed discovery metadata verification and staleness checks
|
|
116
116
|
- Signed connection intro envelopes with replay protection
|
|
117
117
|
- Frame, stream, and upload limits to reduce DoS exposure
|
|
118
|
-
-
|
|
119
|
-
- Signed bilateral receipts (
|
|
118
|
+
- Payment-aware request gating (`402` if no session is reserved when payments are enabled)
|
|
119
|
+
- Signed bilateral receipts (secp256k1) plus on-chain payment authorization (ECDSA)
|
|
120
120
|
|
|
121
121
|
## Node Configuration
|
|
122
122
|
|
|
@@ -126,6 +126,7 @@ interface NodeConfig {
|
|
|
126
126
|
displayName?: string; // Optional human-readable name announced in metadata
|
|
127
127
|
publicAddress?: string; // Optional public host:port override announced in metadata
|
|
128
128
|
dataDir?: string; // Default: ~/.antseed
|
|
129
|
+
identityStore?: IdentityStore; // Pluggable identity storage backend
|
|
129
130
|
dhtPort?: number; // Default: 6881 for seller, 0 (OS-assigned) for buyer
|
|
130
131
|
signalingPort?: number; // Default: 6882 for seller
|
|
131
132
|
bootstrapNodes?: Array<{ host: string; port: number }>;
|
|
@@ -134,7 +135,7 @@ interface NodeConfig {
|
|
|
134
135
|
paymentMethod?: 'crypto';
|
|
135
136
|
platformFeeRate?: number;
|
|
136
137
|
settlementIdleMs?: number;
|
|
137
|
-
|
|
138
|
+
defaultSessionAmountUSDC?: string;
|
|
138
139
|
sellerWalletAddress?: string;
|
|
139
140
|
paymentConfig?: PaymentConfig | null;
|
|
140
141
|
};
|
|
@@ -147,6 +148,7 @@ interface NodeConfig {
|
|
|
147
148
|
| `displayName` | unset | Optional node label included in discovery metadata |
|
|
148
149
|
| `publicAddress` | unset | Optional public `host:port` advertised in signed metadata and preferred by buyers over the raw DHT source address |
|
|
149
150
|
| `dataDir` | `~/.antseed` | Directory for identity keys, metering DB, and config |
|
|
151
|
+
| `identityStore` | `FileIdentityStore` | Pluggable identity storage backend (see [Identity Storage](#identity-storage)) |
|
|
150
152
|
| `dhtPort` | `6881` / `0` | UDP port for DHT. Seller defaults to 6881, buyer uses OS-assigned |
|
|
151
153
|
| `signalingPort` | `6882` | TCP port for P2P signaling and incoming connections (seller only) |
|
|
152
154
|
| `bootstrapNodes` | AntSeed nodes | Additional DHT bootstrap nodes merged with the official AntSeed infrastructure |
|
|
@@ -161,16 +163,87 @@ const node = new AntseedNode({
|
|
|
161
163
|
});
|
|
162
164
|
```
|
|
163
165
|
|
|
166
|
+
## Identity Storage
|
|
167
|
+
|
|
168
|
+
Every node has a secp256k1 identity keypair. The private key (32 bytes, stored as 64 hex characters) serves two roles:
|
|
169
|
+
|
|
170
|
+
1. **P2P identity** — signs metadata, connection handshakes, and metering receipts. Your PeerId is the EVM address (40 hex characters) derived from the public key.
|
|
171
|
+
2. **On-chain wallet** — the same secp256k1 key is used as the EVM wallet. This wallet holds deposits, stakes, receives seller earnings, and signs payment authorizations.
|
|
172
|
+
|
|
173
|
+
> **Important:** Losing your identity key means losing both your peer identity and access to any on-chain funds tied to the derived wallet.
|
|
174
|
+
|
|
175
|
+
### Storage Backends
|
|
176
|
+
|
|
177
|
+
Identity loading follows this priority:
|
|
178
|
+
|
|
179
|
+
1. **Environment variable** — if `ANTSEED_IDENTITY_HEX` is set (64 hex chars), it is used directly and cleared from the environment immediately after read. Useful for injecting keys from secrets managers without touching disk.
|
|
180
|
+
2. **IdentityStore** — if `identityStore` is passed in `NodeConfig`, it is used to load/save the key.
|
|
181
|
+
3. **File** — default. Reads/writes `identity.key` in `dataDir` (`~/.antseed/` by default) with `0600` permissions.
|
|
182
|
+
|
|
183
|
+
If no identity is found, a new keypair is generated and persisted via the active store.
|
|
184
|
+
|
|
185
|
+
### File Store (Default)
|
|
186
|
+
|
|
187
|
+
```ts
|
|
188
|
+
import { AntseedNode, FileIdentityStore } from '@antseed/node';
|
|
189
|
+
|
|
190
|
+
const node = new AntseedNode({
|
|
191
|
+
role: 'seller',
|
|
192
|
+
// These are equivalent — FileIdentityStore is the default:
|
|
193
|
+
identityStore: new FileIdentityStore('/path/to/config-dir'),
|
|
194
|
+
// dataDir: '/path/to/config-dir',
|
|
195
|
+
});
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Environment Variable
|
|
199
|
+
|
|
200
|
+
Pass the private key hex from a secrets manager (AWS SSM, HashiCorp Vault, etc.):
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
export ANTSEED_IDENTITY_HEX="$(vault kv get -field=key secret/antseed/identity)"
|
|
204
|
+
antseed seed --provider anthropic
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
The variable is cleared from the process environment immediately after consumption.
|
|
208
|
+
|
|
209
|
+
### Custom Store
|
|
210
|
+
|
|
211
|
+
Implement the `IdentityStore` interface for any backend:
|
|
212
|
+
|
|
213
|
+
```ts
|
|
214
|
+
import { AntseedNode, type IdentityStore } from '@antseed/node';
|
|
215
|
+
|
|
216
|
+
class VaultIdentityStore implements IdentityStore {
|
|
217
|
+
async load(): Promise<string | null> {
|
|
218
|
+
// Read 64-char hex string from your backend
|
|
219
|
+
return await vault.getSecret('antseed-identity');
|
|
220
|
+
}
|
|
221
|
+
async save(hexKey: string): Promise<void> {
|
|
222
|
+
// Persist the 64-char hex string
|
|
223
|
+
await vault.putSecret('antseed-identity', hexKey);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const node = new AntseedNode({
|
|
228
|
+
role: 'seller',
|
|
229
|
+
identityStore: new VaultIdentityStore(),
|
|
230
|
+
});
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Desktop App
|
|
234
|
+
|
|
235
|
+
The AntSeed Desktop app encrypts the identity at rest using Electron's `safeStorage` API. The encryption key is stored in the OS keychain (macOS Keychain / Windows DPAPI / Linux libsecret) and the encrypted blob is stored at `~/.antseed/identity.enc`. On first launch, any existing plaintext `identity.key` is migrated to the encrypted store and deleted.
|
|
236
|
+
|
|
164
237
|
## On-Chain Settlement Flow
|
|
165
238
|
|
|
166
239
|
When `payments.enabled=true` in seller mode:
|
|
167
240
|
|
|
168
241
|
1. A per-buyer payment session is created via `BuyerPaymentManager`.
|
|
169
|
-
2.
|
|
242
|
+
2. Deposit balance is locked on-chain at session start.
|
|
170
243
|
3. Usage receipts are generated during request handling.
|
|
171
244
|
4. On idle/session finalization, `calculateSettlement` computes cost from receipts and settles on-chain via:
|
|
172
|
-
- `
|
|
173
|
-
5. Any unused
|
|
245
|
+
- `ChannelsClient.settle(sessionId, tokenCount)`
|
|
246
|
+
5. Any unused reservation is refunded to the buyer by contract logic in the same settlement transaction.
|
|
174
247
|
|
|
175
248
|
Minimal crypto config:
|
|
176
249
|
|
|
@@ -181,15 +254,16 @@ const node = new AntseedNode({
|
|
|
181
254
|
enabled: true,
|
|
182
255
|
paymentMethod: 'crypto',
|
|
183
256
|
platformFeeRate: 0.05,
|
|
184
|
-
|
|
257
|
+
defaultSessionAmountUSDC: '1',
|
|
185
258
|
sellerWalletAddress: '0xSeller...',
|
|
186
259
|
paymentConfig: {
|
|
187
260
|
crypto: {
|
|
188
261
|
chainId: 'base',
|
|
189
262
|
rpcUrl: process.env.RPC_URL!,
|
|
190
|
-
|
|
263
|
+
depositsContractAddress: process.env.DEPOSITS_ADDRESS!,
|
|
264
|
+
channelsContractAddress: process.env.CHANNELS_ADDRESS!,
|
|
191
265
|
usdcContractAddress: process.env.USDC_ADDRESS!,
|
|
192
|
-
|
|
266
|
+
autoFundDeposit: true,
|
|
193
267
|
},
|
|
194
268
|
},
|
|
195
269
|
},
|
|
@@ -215,7 +289,7 @@ import type {
|
|
|
215
289
|
} from '@antseed/node';
|
|
216
290
|
|
|
217
291
|
// Identity & P2P
|
|
218
|
-
import { loadOrCreateIdentity, type Identity } from '@antseed/node';
|
|
292
|
+
import { loadOrCreateIdentity, type Identity, type IdentityStore, FileIdentityStore } from '@antseed/node';
|
|
219
293
|
import { NatTraversal, type NatMapping, type NatTraversalResult } from '@antseed/node';
|
|
220
294
|
|
|
221
295
|
// Discovery
|
|
@@ -228,7 +302,7 @@ import type { PeerMetadata, ProviderAnnouncement } from '@antseed/node';
|
|
|
228
302
|
import { MeteringStorage } from '@antseed/node';
|
|
229
303
|
import { BalanceManager } from '@antseed/node';
|
|
230
304
|
import { BuyerPaymentManager, calculateSettlement } from '@antseed/node/payments';
|
|
231
|
-
import {
|
|
305
|
+
import { BaseChannelsClient } from '@antseed/node';
|
|
232
306
|
|
|
233
307
|
// Routing & Proxy
|
|
234
308
|
import { ProxyMux } from '@antseed/node';
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type SerializedHttpRequest, type SerializedHttpResponse, type SerializedHttpResponseChunk } from "./types/http.js";
|
|
2
|
+
import type { PeerInfo, PeerId } from "./types/peer.js";
|
|
3
|
+
import type { PeerConnection } from "./p2p/connection-manager.js";
|
|
4
|
+
import type { ProxyMux } from "./proxy/proxy-mux.js";
|
|
5
|
+
import type { PaymentMux } from "./p2p/payment-mux.js";
|
|
6
|
+
import type { BuyerPaymentNegotiator } from "./payments/buyer-payment-negotiator.js";
|
|
7
|
+
export interface RequestStreamResponseMetadata {
|
|
8
|
+
streaming: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface RequestStreamCallbacks {
|
|
11
|
+
onResponseStart?: (response: SerializedHttpResponse, metadata: RequestStreamResponseMetadata) => void;
|
|
12
|
+
onResponseChunk?: (chunk: SerializedHttpResponseChunk) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface RequestExecutionOptions {
|
|
15
|
+
signal?: AbortSignal;
|
|
16
|
+
}
|
|
17
|
+
export interface BuyerRequestHandlerConfig {
|
|
18
|
+
requestTimeoutMs?: number;
|
|
19
|
+
maxStreamBufferBytes?: number;
|
|
20
|
+
maxStreamDurationMs?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface BuyerRequestHandlerDeps {
|
|
23
|
+
negotiator: BuyerPaymentNegotiator | null;
|
|
24
|
+
getConnection: (peer: PeerInfo) => Promise<PeerConnection>;
|
|
25
|
+
getMux: (peerId: PeerId, conn: PeerConnection) => ProxyMux;
|
|
26
|
+
registerPaymentMux: (peerId: PeerId, mux: PaymentMux) => void;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Handles buyer-side outbound request execution: connection setup, streaming,
|
|
30
|
+
* timeouts, abort signals, 402 payment negotiation, and cost tracking.
|
|
31
|
+
*
|
|
32
|
+
* Extracted from AntseedNode._sendRequestInternal to separate buyer request
|
|
33
|
+
* orchestration from core node lifecycle.
|
|
34
|
+
*/
|
|
35
|
+
export declare class BuyerRequestHandler {
|
|
36
|
+
private readonly _config;
|
|
37
|
+
private readonly _deps;
|
|
38
|
+
constructor(config: BuyerRequestHandlerConfig, deps: BuyerRequestHandlerDeps);
|
|
39
|
+
sendRequest(peer: PeerInfo, req: SerializedHttpRequest, callbacks?: RequestStreamCallbacks, options?: RequestExecutionOptions): Promise<SerializedHttpResponse>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=buyer-request-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buyer-request-handler.d.ts","sourceRoot":"","sources":["../src/buyer-request-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EACjC,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAGrF,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,CAChB,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,6BAA6B,KACpC,IAAI,CAAC;IACV,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC1C,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,QAAQ,CAAC;IAC3D,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;CAC/D;AAED;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;gBAEpC,MAAM,EAAE,yBAAyB,EAAE,IAAI,EAAE,uBAAuB;IAKtE,WAAW,CACf,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,qBAAqB,EAC1B,SAAS,CAAC,EAAE,sBAAsB,EAClC,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,sBAAsB,CAAC;CAqOnC"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { ANTSEED_STREAMING_RESPONSE_HEADER, ANTSEED_SPENDING_AUTH_HEADER, } from "./types/http.js";
|
|
2
|
+
import { ConnectionState } from "./types/connection.js";
|
|
3
|
+
import { debugLog, debugWarn } from "./utils/debug.js";
|
|
4
|
+
/**
|
|
5
|
+
* Handles buyer-side outbound request execution: connection setup, streaming,
|
|
6
|
+
* timeouts, abort signals, 402 payment negotiation, and cost tracking.
|
|
7
|
+
*
|
|
8
|
+
* Extracted from AntseedNode._sendRequestInternal to separate buyer request
|
|
9
|
+
* orchestration from core node lifecycle.
|
|
10
|
+
*/
|
|
11
|
+
export class BuyerRequestHandler {
|
|
12
|
+
_config;
|
|
13
|
+
_deps;
|
|
14
|
+
constructor(config, deps) {
|
|
15
|
+
this._config = config;
|
|
16
|
+
this._deps = deps;
|
|
17
|
+
}
|
|
18
|
+
async sendRequest(peer, req, callbacks, options) {
|
|
19
|
+
if (!req.requestId || typeof req.requestId !== "string") {
|
|
20
|
+
throw new Error("requestId must be a non-empty string");
|
|
21
|
+
}
|
|
22
|
+
const opName = callbacks ? "sendRequestStream" : "sendRequest";
|
|
23
|
+
debugLog(`[BuyerRequest] ${opName} ${req.method} ${req.path} → peer ${peer.peerId.slice(0, 12)}... (reqId=${req.requestId.slice(0, 8)})`);
|
|
24
|
+
const conn = await this._deps.getConnection(peer);
|
|
25
|
+
debugLog(`[BuyerRequest] Connection to ${peer.peerId.slice(0, 12)}... state=${conn.state}`);
|
|
26
|
+
const mux = this._deps.getMux(peer.peerId, conn);
|
|
27
|
+
const negotiator = this._deps.negotiator;
|
|
28
|
+
if (negotiator) {
|
|
29
|
+
this._deps.registerPaymentMux(peer.peerId, negotiator.getOrCreatePaymentMux(peer.peerId, conn));
|
|
30
|
+
}
|
|
31
|
+
// Extract and strip x-antseed-spending-auth header if present (external auth compatibility)
|
|
32
|
+
const externalSpendingAuth = req.headers[ANTSEED_SPENDING_AUTH_HEADER] ?? null;
|
|
33
|
+
if (externalSpendingAuth) {
|
|
34
|
+
const { [ANTSEED_SPENDING_AUTH_HEADER]: _, ...cleanHeaders } = req.headers;
|
|
35
|
+
req = { ...req, headers: cleanHeaders };
|
|
36
|
+
}
|
|
37
|
+
if (externalSpendingAuth && negotiator) {
|
|
38
|
+
debugLog(`[BuyerRequest] Applying external spending auth for ${peer.peerId.slice(0, 12)}...`);
|
|
39
|
+
await negotiator.applyExternalSpendingAuth(peer, conn, externalSpendingAuth);
|
|
40
|
+
}
|
|
41
|
+
if (negotiator && !externalSpendingAuth) {
|
|
42
|
+
await negotiator.preparePreRequestAuth(peer, conn);
|
|
43
|
+
}
|
|
44
|
+
let startTime = Date.now();
|
|
45
|
+
const executeRequest = () => new Promise((resolve, reject) => {
|
|
46
|
+
const timeoutMs = this._config.requestTimeoutMs ?? 30_000;
|
|
47
|
+
const maxStreamBufferBytes = Math.max(1, this._config.maxStreamBufferBytes ?? 16 * 1024 * 1024);
|
|
48
|
+
const maxStreamDurationMs = Math.max(1, this._config.maxStreamDurationMs ?? 5 * 60_000);
|
|
49
|
+
const streamInitialResponseTimeoutMs = callbacks ? Math.max(timeoutMs, 90_000) : timeoutMs;
|
|
50
|
+
const streamIdleTimeoutMs = Math.max(timeoutMs, 60_000);
|
|
51
|
+
let settled = false;
|
|
52
|
+
let streamStarted = false;
|
|
53
|
+
let streamStartedAtMs = 0;
|
|
54
|
+
let streamBufferedBytes = 0;
|
|
55
|
+
let streamStartResponse = null;
|
|
56
|
+
const streamChunks = [];
|
|
57
|
+
let activeTimeout = null;
|
|
58
|
+
let activeTimeoutMs = streamInitialResponseTimeoutMs;
|
|
59
|
+
const abortSignal = options?.signal;
|
|
60
|
+
let abortListenerAttached = false;
|
|
61
|
+
let connectionStateListenerAttached = false;
|
|
62
|
+
const hasConnectionStateEvents = typeof conn.on === "function"
|
|
63
|
+
&& typeof conn.off === "function";
|
|
64
|
+
const cleanupAbortListener = () => {
|
|
65
|
+
if (abortSignal && abortListenerAttached) {
|
|
66
|
+
abortSignal.removeEventListener("abort", onAbort);
|
|
67
|
+
abortListenerAttached = false;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const cleanupConnectionListener = () => {
|
|
71
|
+
if (!connectionStateListenerAttached)
|
|
72
|
+
return;
|
|
73
|
+
conn.off("stateChange", onConnectionStateChange);
|
|
74
|
+
connectionStateListenerAttached = false;
|
|
75
|
+
};
|
|
76
|
+
const onConnectionStateChange = (state) => {
|
|
77
|
+
if (settled)
|
|
78
|
+
return;
|
|
79
|
+
if (state !== ConnectionState.Closed && state !== ConnectionState.Failed) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
settled = true;
|
|
83
|
+
if (activeTimeout)
|
|
84
|
+
clearTimeout(activeTimeout);
|
|
85
|
+
cleanupAbortListener();
|
|
86
|
+
cleanupConnectionListener();
|
|
87
|
+
mux.cancelProxyRequest(req.requestId);
|
|
88
|
+
reject(new Error(`Connection to ${peer.peerId} ${state.toLowerCase()} during request ${req.requestId}`));
|
|
89
|
+
};
|
|
90
|
+
const onAbort = () => {
|
|
91
|
+
if (settled)
|
|
92
|
+
return;
|
|
93
|
+
settled = true;
|
|
94
|
+
if (activeTimeout)
|
|
95
|
+
clearTimeout(activeTimeout);
|
|
96
|
+
cleanupAbortListener();
|
|
97
|
+
cleanupConnectionListener();
|
|
98
|
+
debugWarn(`[BuyerRequest] Request ${req.requestId.slice(0, 8)} aborted by caller`);
|
|
99
|
+
mux.cancelProxyRequest(req.requestId);
|
|
100
|
+
reject(new Error(`Request ${req.requestId} aborted`));
|
|
101
|
+
};
|
|
102
|
+
if (abortSignal) {
|
|
103
|
+
if (abortSignal.aborted) {
|
|
104
|
+
onAbort();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
abortSignal.addEventListener("abort", onAbort, { once: true });
|
|
108
|
+
abortListenerAttached = true;
|
|
109
|
+
}
|
|
110
|
+
if (hasConnectionStateEvents) {
|
|
111
|
+
conn.on("stateChange", onConnectionStateChange);
|
|
112
|
+
connectionStateListenerAttached = true;
|
|
113
|
+
}
|
|
114
|
+
const resetTimeout = (ms) => {
|
|
115
|
+
if (activeTimeout)
|
|
116
|
+
clearTimeout(activeTimeout);
|
|
117
|
+
activeTimeoutMs = ms;
|
|
118
|
+
activeTimeout = setTimeout(() => {
|
|
119
|
+
if (settled)
|
|
120
|
+
return;
|
|
121
|
+
settled = true;
|
|
122
|
+
cleanupAbortListener();
|
|
123
|
+
cleanupConnectionListener();
|
|
124
|
+
debugWarn(`[BuyerRequest] Request ${req.requestId.slice(0, 8)} timed out after ${Date.now() - startTime}ms `
|
|
125
|
+
+ `(timeout=${activeTimeoutMs}ms, stream=${callbacks ? "true" : "false"}, streamStarted=${streamStarted ? "true" : "false"}, buffered=${streamBufferedBytes}b)`);
|
|
126
|
+
mux.cancelProxyRequest(req.requestId);
|
|
127
|
+
reject(new Error(`Request ${req.requestId} timed out`));
|
|
128
|
+
}, ms);
|
|
129
|
+
};
|
|
130
|
+
resetTimeout(streamInitialResponseTimeoutMs);
|
|
131
|
+
const finish = (response) => {
|
|
132
|
+
if (settled)
|
|
133
|
+
return;
|
|
134
|
+
settled = true;
|
|
135
|
+
if (activeTimeout)
|
|
136
|
+
clearTimeout(activeTimeout);
|
|
137
|
+
cleanupAbortListener();
|
|
138
|
+
cleanupConnectionListener();
|
|
139
|
+
const cleaned = stripStreamingHeader(response);
|
|
140
|
+
debugLog(`[BuyerRequest] Response for ${req.requestId.slice(0, 8)}: status=${cleaned.statusCode} (${Date.now() - startTime}ms, ${cleaned.body.length}b)`);
|
|
141
|
+
resolve(cleaned);
|
|
142
|
+
};
|
|
143
|
+
const fail = (error) => {
|
|
144
|
+
if (settled)
|
|
145
|
+
return;
|
|
146
|
+
settled = true;
|
|
147
|
+
if (activeTimeout)
|
|
148
|
+
clearTimeout(activeTimeout);
|
|
149
|
+
cleanupAbortListener();
|
|
150
|
+
cleanupConnectionListener();
|
|
151
|
+
reject(error);
|
|
152
|
+
};
|
|
153
|
+
mux.sendProxyRequest(req, (response, metadata) => {
|
|
154
|
+
if (settled)
|
|
155
|
+
return;
|
|
156
|
+
if (metadata.streamingStart) {
|
|
157
|
+
streamStarted = true;
|
|
158
|
+
streamStartedAtMs = Date.now();
|
|
159
|
+
streamBufferedBytes = 0;
|
|
160
|
+
streamStartResponse = stripStreamingHeader(response);
|
|
161
|
+
debugLog(`[BuyerRequest] Stream started for ${req.requestId.slice(0, 8)}; idle-timeout=${streamIdleTimeoutMs}ms`);
|
|
162
|
+
resetTimeout(streamIdleTimeoutMs);
|
|
163
|
+
callbacks?.onResponseStart?.(streamStartResponse, { streaming: true });
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
callbacks?.onResponseStart?.(stripStreamingHeader(response), { streaming: false });
|
|
167
|
+
finish(response);
|
|
168
|
+
}, (chunk) => {
|
|
169
|
+
if (settled)
|
|
170
|
+
return;
|
|
171
|
+
if (!streamStarted)
|
|
172
|
+
return;
|
|
173
|
+
resetTimeout(streamIdleTimeoutMs);
|
|
174
|
+
if (Date.now() - streamStartedAtMs > maxStreamDurationMs) {
|
|
175
|
+
mux.cancelProxyRequest(req.requestId);
|
|
176
|
+
fail(new Error(`Stream ${req.requestId} exceeded max duration (${maxStreamDurationMs}ms)`));
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
callbacks?.onResponseChunk?.(chunk);
|
|
180
|
+
if (chunk.data.length > 0) {
|
|
181
|
+
if (callbacks?.onResponseChunk) {
|
|
182
|
+
streamBufferedBytes += chunk.data.length;
|
|
183
|
+
streamChunks.push(chunk.data);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
const nextBufferedBytes = streamBufferedBytes + chunk.data.length;
|
|
187
|
+
if (nextBufferedBytes > maxStreamBufferBytes) {
|
|
188
|
+
mux.cancelProxyRequest(req.requestId);
|
|
189
|
+
fail(new Error(`Stream ${req.requestId} exceeded max buffered size (${maxStreamBufferBytes} bytes)`));
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
streamBufferedBytes = nextBufferedBytes;
|
|
193
|
+
streamChunks.push(chunk.data);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (!chunk.done)
|
|
197
|
+
return;
|
|
198
|
+
if (!streamStartResponse) {
|
|
199
|
+
fail(new Error(`Stream ${req.requestId} ended before response start`));
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
finish({
|
|
203
|
+
...streamStartResponse,
|
|
204
|
+
body: concatChunks(streamChunks),
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
const response = await executeRequest();
|
|
209
|
+
if (response.statusCode === 402 && negotiator && !externalSpendingAuth) {
|
|
210
|
+
const result = await negotiator.handle402(response, peer, conn, req);
|
|
211
|
+
if (result.action === 'return')
|
|
212
|
+
return result.response;
|
|
213
|
+
startTime = Date.now();
|
|
214
|
+
return executeRequest();
|
|
215
|
+
}
|
|
216
|
+
if (negotiator) {
|
|
217
|
+
negotiator.estimateCostFromResponse(peer, response);
|
|
218
|
+
negotiator.parseCostHeaders(peer.peerId, response);
|
|
219
|
+
negotiator.recordResponseContent(peer.peerId, req.body, response.body, Date.now() - startTime);
|
|
220
|
+
// Send SpendingAuth immediately after response so the seller always has
|
|
221
|
+
// a valid signature for close(), even if the buyer disconnects before the next request.
|
|
222
|
+
try {
|
|
223
|
+
await negotiator.sendPostResponseAuth(peer, conn);
|
|
224
|
+
}
|
|
225
|
+
catch (err) {
|
|
226
|
+
debugWarn(`[BuyerRequest] sendPostResponseAuth failed, response still returned: ${err instanceof Error ? err.message : err}`);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return response;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
function stripStreamingHeader(response) {
|
|
233
|
+
if (response.headers[ANTSEED_STREAMING_RESPONSE_HEADER] !== "1") {
|
|
234
|
+
return response;
|
|
235
|
+
}
|
|
236
|
+
const headers = { ...response.headers };
|
|
237
|
+
delete headers[ANTSEED_STREAMING_RESPONSE_HEADER];
|
|
238
|
+
return { ...response, headers };
|
|
239
|
+
}
|
|
240
|
+
function concatChunks(chunks) {
|
|
241
|
+
if (chunks.length === 0)
|
|
242
|
+
return new Uint8Array(0);
|
|
243
|
+
if (chunks.length === 1)
|
|
244
|
+
return chunks[0];
|
|
245
|
+
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
246
|
+
const output = new Uint8Array(totalLength);
|
|
247
|
+
let offset = 0;
|
|
248
|
+
for (const chunk of chunks) {
|
|
249
|
+
output.set(chunk, offset);
|
|
250
|
+
offset += chunk.length;
|
|
251
|
+
}
|
|
252
|
+
return output;
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=buyer-request-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buyer-request-handler.js","sourceRoot":"","sources":["../src/buyer-request-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@ import type { DHTNode } from "./dht-node.js";
|
|
|
3
3
|
import type { PeerOffering } from "../types/capability.js";
|
|
4
4
|
import type { PeerMetadata } from "./peer-metadata.js";
|
|
5
5
|
import type { ServiceApiProtocol } from "../types/service-api.js";
|
|
6
|
-
import type {
|
|
6
|
+
import type { StakingClient } from "../payments/evm/staking-client.js";
|
|
7
|
+
import type { ChannelsClient } from "../payments/evm/channels-client.js";
|
|
7
8
|
export interface AnnouncerConfig {
|
|
8
9
|
identity: Identity;
|
|
9
10
|
dht: DHTNode;
|
|
@@ -30,7 +31,9 @@ export interface AnnouncerConfig {
|
|
|
30
31
|
offerings?: PeerOffering[];
|
|
31
32
|
stakeAmountUSDC?: number;
|
|
32
33
|
trustScore?: number;
|
|
33
|
-
|
|
34
|
+
paymentsEnabled?: boolean;
|
|
35
|
+
channelsClient?: ChannelsClient;
|
|
36
|
+
stakingClient?: StakingClient;
|
|
34
37
|
reannounceIntervalMs: number;
|
|
35
38
|
signalingPort: number;
|
|
36
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"announcer.d.ts","sourceRoot":"","sources":["../../src/discovery/announcer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAU7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,oBAAoB,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAKlE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"announcer.d.ts","sourceRoot":"","sources":["../../src/discovery/announcer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAU7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAwB,MAAM,oBAAoB,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAKlE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,GAAG,CACV,MAAM,EACN;QACE,QAAQ,EAAE;YAAE,kBAAkB,EAAE,MAAM,CAAC;YAAC,mBAAmB,EAAE,MAAM,CAAA;SAAE,CAAC;QACtE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,kBAAkB,EAAE,MAAM,CAAC;YAAC,mBAAmB,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxF,CACF,CAAC;IACF,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,eAAe,CAA6B;gBAExC,MAAM,EAAE,eAAe;IAI7B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAO/B;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,qBAAqB,IAAI,IAAI;IAe7B,oBAAoB,IAAI,IAAI;IAO5B,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAI3D,iBAAiB,IAAI,YAAY,GAAG,IAAI;YAI1B,oBAAoB;YAwEpB,eAAe;YA4Cf,iBAAiB;IAS/B,OAAO,CAAC,2BAA2B;IA+BnC,OAAO,CAAC,6BAA6B;CA8BtC"}
|
|
@@ -5,7 +5,6 @@ import { isKnownServiceApiProtocol } from "../types/service-api.js";
|
|
|
5
5
|
import { encodeMetadataForSigning } from "./metadata-codec.js";
|
|
6
6
|
import { debugWarn } from "../utils/debug.js";
|
|
7
7
|
import { bytesToHex } from "../utils/hex.js";
|
|
8
|
-
import { identityToEvmAddress } from "../payments/evm/keypair.js";
|
|
9
8
|
export class PeerAnnouncer {
|
|
10
9
|
config;
|
|
11
10
|
intervalHandle = null;
|
|
@@ -99,28 +98,26 @@ export class PeerAnnouncer {
|
|
|
99
98
|
if (this.config.trustScore != null) {
|
|
100
99
|
metadata.trustScore = this.config.trustScore;
|
|
101
100
|
}
|
|
102
|
-
if (this.config.
|
|
103
|
-
|
|
104
|
-
metadata.evmAddress = evmAddress;
|
|
105
|
-
if (includeOnChainReputation) {
|
|
101
|
+
if (this.config.paymentsEnabled) {
|
|
102
|
+
if (includeOnChainReputation && this.config.channelsClient && this.config.stakingClient) {
|
|
106
103
|
try {
|
|
107
|
-
const
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
metadata.
|
|
104
|
+
const evmAddress = this.config.identity.wallet.address;
|
|
105
|
+
const agentId = await this.config.stakingClient.getAgentId(evmAddress);
|
|
106
|
+
const stats = await this.config.channelsClient.getAgentStats(agentId);
|
|
107
|
+
metadata.onChainChannelCount = stats.channelCount;
|
|
108
|
+
metadata.onChainGhostCount = stats.ghostCount;
|
|
111
109
|
}
|
|
112
110
|
catch {
|
|
113
|
-
//
|
|
111
|
+
// Channels/staking contract lookup failed — skip on-chain stats for this cycle
|
|
114
112
|
}
|
|
115
113
|
}
|
|
116
114
|
else if (this._latestMetadata) {
|
|
117
|
-
metadata.
|
|
118
|
-
metadata.
|
|
119
|
-
metadata.onChainDisputeCount = this._latestMetadata.onChainDisputeCount;
|
|
115
|
+
metadata.onChainChannelCount = this._latestMetadata.onChainChannelCount;
|
|
116
|
+
metadata.onChainGhostCount = this._latestMetadata.onChainGhostCount;
|
|
120
117
|
}
|
|
121
118
|
}
|
|
122
119
|
const dataToSign = encodeMetadataForSigning(metadata);
|
|
123
|
-
const signature =
|
|
120
|
+
const signature = signData(this.config.identity.wallet, dataToSign);
|
|
124
121
|
metadata.signature = bytesToHex(signature);
|
|
125
122
|
return metadata;
|
|
126
123
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"announcer.js","sourceRoot":"","sources":["../../src/discovery/announcer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"announcer.js","sourceRoot":"","sources":["../../src/discovery/announcer.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,6 @@ export { validateMetadata, MAX_METADATA_SIZE, MAX_PROVIDERS, type ValidationErro
|
|
|
8
8
|
export { METADATA_VERSION, WELL_KNOWN_SERVICE_CATEGORIES, type PeerMetadata, type ProviderAnnouncement } from './peer-metadata.js';
|
|
9
9
|
export { parsePublicAddress, MAX_PUBLIC_ADDRESS_LENGTH, type ParsedPublicAddress } from './public-address.js';
|
|
10
10
|
export { type MetadataResolver, type PeerEndpoint } from './metadata-resolver.js';
|
|
11
|
-
export { DefaultMetadataResolver } from './default-metadata-resolver.js';
|
|
12
11
|
export { HttpMetadataResolver, type HttpMetadataResolverConfig } from './http-metadata-resolver.js';
|
|
13
12
|
export { DHTHealthMonitor, DEFAULT_HEALTH_THRESHOLDS, type DHTHealthSnapshot, type HealthThresholds } from './dht-health.js';
|
|
14
|
-
export { verifyReputation, type ReputationVerification } from './reputation-verifier.js';
|
|
15
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,8BAA8B,EAC9B,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE3G,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjL,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC1I,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACnH,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,KAAK,YAAY,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnI,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/discovery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,8BAA8B,EAC9B,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE3G,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACjL,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC1I,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACnH,OAAO,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,KAAK,YAAY,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACnI,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC9G,OAAO,EAAE,KAAK,gBAAgB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,KAAK,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/discovery/index.js
CHANGED
|
@@ -7,8 +7,6 @@ export { encodeMetadata, encodeMetadataForSigning, decodeMetadata } from './meta
|
|
|
7
7
|
export { validateMetadata, MAX_METADATA_SIZE, MAX_PROVIDERS } from './metadata-validator.js';
|
|
8
8
|
export { METADATA_VERSION, WELL_KNOWN_SERVICE_CATEGORIES } from './peer-metadata.js';
|
|
9
9
|
export { parsePublicAddress, MAX_PUBLIC_ADDRESS_LENGTH } from './public-address.js';
|
|
10
|
-
export { DefaultMetadataResolver } from './default-metadata-resolver.js';
|
|
11
10
|
export { HttpMetadataResolver } from './http-metadata-resolver.js';
|
|
12
11
|
export { DHTHealthMonitor, DEFAULT_HEALTH_THRESHOLDS } from './dht-health.js';
|
|
13
|
-
export { verifyReputation } from './reputation-verifier.js';
|
|
14
12
|
//# sourceMappingURL=index.js.map
|