@antseed/node 0.1.6 → 0.2.0
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/LICENSE +674 -0
- package/README.md +13 -0
- package/dist/discovery/announcer.d.ts.map +1 -1
- package/dist/discovery/announcer.js +30 -1
- package/dist/discovery/announcer.js.map +1 -1
- package/dist/discovery/dht-node.d.ts +4 -0
- package/dist/discovery/dht-node.d.ts.map +1 -1
- package/dist/discovery/dht-node.js +20 -3
- package/dist/discovery/dht-node.js.map +1 -1
- package/dist/discovery/http-metadata-resolver.d.ts +4 -1
- package/dist/discovery/http-metadata-resolver.d.ts.map +1 -1
- package/dist/discovery/http-metadata-resolver.js +23 -7
- package/dist/discovery/http-metadata-resolver.js.map +1 -1
- package/dist/discovery/index.d.ts +1 -3
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +1 -3
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/metadata-codec.d.ts.map +1 -1
- package/dist/discovery/metadata-codec.js +7 -25
- package/dist/discovery/metadata-codec.js.map +1 -1
- package/dist/discovery/peer-lookup.d.ts +2 -0
- package/dist/discovery/peer-lookup.d.ts.map +1 -1
- package/dist/discovery/peer-lookup.js +59 -28
- package/dist/discovery/peer-lookup.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/interfaces/seller-provider.d.ts +0 -31
- package/dist/interfaces/seller-provider.d.ts.map +1 -1
- package/dist/node.d.ts +2 -4
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +11 -128
- package/dist/node.js.map +1 -1
- package/dist/payments/seller-payment-manager.d.ts +76 -0
- package/dist/payments/seller-payment-manager.d.ts.map +1 -0
- package/dist/payments/seller-payment-manager.js +205 -0
- package/dist/payments/seller-payment-manager.js.map +1 -0
- package/dist/types/capability.d.ts +3 -2
- package/dist/types/capability.d.ts.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/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-lookup.d.ts","sourceRoot":"","sources":["../../src/discovery/peer-lookup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"peer-lookup.d.ts","sourceRoot":"","sources":["../../src/discovery/peer-lookup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAU7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,wBAAwB,CAAC;AAW7E,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,OAAO,CAAC;IACb,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,qBAAqB,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,GAAG,kBAAkB,CAKhF,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;gBAE1B,MAAM,EAAE,YAAY;IAI1B,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAOtD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAoBnD,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAOpE,oBAAoB;YA2BpB,kBAAkB;IAoB1B,uBAAuB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAOvE,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO;CAIzC"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { verifySignature, hexToBytes } from "../p2p/identity.js";
|
|
2
|
-
import { providerTopic, capabilityTopic, topicToInfoHash } from "./dht-node.js";
|
|
2
|
+
import { providerTopic, modelTopic, modelSearchTopic, capabilityTopic, topicToInfoHash, normalizeModelTopicKey, normalizeModelSearchTopicKey, } from "./dht-node.js";
|
|
3
3
|
import { encodeMetadataForSigning } from "./metadata-codec.js";
|
|
4
|
+
function shuffle(arr) {
|
|
5
|
+
const out = arr.slice();
|
|
6
|
+
for (let i = out.length - 1; i > 0; i--) {
|
|
7
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
8
|
+
[out[i], out[j]] = [out[j], out[i]];
|
|
9
|
+
}
|
|
10
|
+
return out;
|
|
11
|
+
}
|
|
4
12
|
export const DEFAULT_LOOKUP_CONFIG = {
|
|
5
13
|
requireValidSignature: true,
|
|
6
14
|
allowStaleMetadata: false,
|
|
@@ -16,47 +24,70 @@ export class PeerLookup {
|
|
|
16
24
|
const topic = providerTopic(provider);
|
|
17
25
|
const infoHash = topicToInfoHash(topic);
|
|
18
26
|
const peers = await this.config.dht.lookup(infoHash);
|
|
19
|
-
return this.resolveLookupResults(peers);
|
|
27
|
+
return this.resolveLookupResults(shuffle(peers));
|
|
28
|
+
}
|
|
29
|
+
async findByModel(model) {
|
|
30
|
+
const canonicalTopic = modelTopic(model);
|
|
31
|
+
const canonicalInfoHash = topicToInfoHash(canonicalTopic);
|
|
32
|
+
const canonicalModelKey = normalizeModelTopicKey(model);
|
|
33
|
+
const compactModelKey = normalizeModelSearchTopicKey(model);
|
|
34
|
+
if (compactModelKey === canonicalModelKey) {
|
|
35
|
+
const peers = await this.config.dht.lookup(canonicalInfoHash);
|
|
36
|
+
return this.resolveLookupResults(shuffle(peers));
|
|
37
|
+
}
|
|
38
|
+
const compactTopic = modelSearchTopic(model);
|
|
39
|
+
const compactInfoHash = topicToInfoHash(compactTopic);
|
|
40
|
+
const [canonicalPeers, compactPeers] = await Promise.all([
|
|
41
|
+
this.config.dht.lookup(canonicalInfoHash),
|
|
42
|
+
this.config.dht.lookup(compactInfoHash),
|
|
43
|
+
]);
|
|
44
|
+
return this.resolveLookupResults(shuffle([...canonicalPeers, ...compactPeers]));
|
|
20
45
|
}
|
|
21
46
|
async findByCapability(capability, name) {
|
|
22
47
|
const topic = capabilityTopic(capability, name);
|
|
23
48
|
const infoHash = topicToInfoHash(topic);
|
|
24
49
|
const peers = await this.config.dht.lookup(infoHash);
|
|
25
|
-
return this.resolveLookupResults(peers);
|
|
50
|
+
return this.resolveLookupResults(shuffle(peers));
|
|
26
51
|
}
|
|
27
52
|
async resolveLookupResults(peers) {
|
|
28
|
-
|
|
53
|
+
// Deduplicate endpoints before firing parallel requests
|
|
29
54
|
const seenEndpoints = new Set();
|
|
55
|
+
const uniquePeers = [];
|
|
30
56
|
for (const peer of peers) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (seenEndpoints.has(endpointKey)) {
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
seenEndpoints.add(endpointKey);
|
|
39
|
-
const metadata = await this.config.metadataResolver.resolve(peer);
|
|
40
|
-
if (metadata === null) {
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
if (this.config.requireValidSignature) {
|
|
44
|
-
const valid = await this.verifyMetadataSignature(metadata);
|
|
45
|
-
if (!valid) {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
57
|
+
const key = `${peer.host.toLowerCase()}:${peer.port}`;
|
|
58
|
+
if (!seenEndpoints.has(key)) {
|
|
59
|
+
seenEndpoints.add(key);
|
|
60
|
+
uniquePeers.push(peer);
|
|
48
61
|
}
|
|
49
|
-
|
|
50
|
-
|
|
62
|
+
}
|
|
63
|
+
// Resolve all peers in parallel — bad-port timeouts no longer block good peers
|
|
64
|
+
const settled = await Promise.allSettled(uniquePeers.map((peer) => this._resolveSinglePeer(peer)));
|
|
65
|
+
const results = [];
|
|
66
|
+
for (const r of settled) {
|
|
67
|
+
if (r.status === "fulfilled" && r.value !== null) {
|
|
68
|
+
results.push(r.value);
|
|
69
|
+
if (results.length >= this.config.maxResults)
|
|
70
|
+
break;
|
|
51
71
|
}
|
|
52
|
-
results.push({
|
|
53
|
-
metadata,
|
|
54
|
-
host: peer.host,
|
|
55
|
-
port: peer.port,
|
|
56
|
-
});
|
|
57
72
|
}
|
|
58
73
|
return results;
|
|
59
74
|
}
|
|
75
|
+
async _resolveSinglePeer(peer) {
|
|
76
|
+
const metadata = await this.config.metadataResolver.resolve(peer);
|
|
77
|
+
if (metadata === null) {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
if (this.config.requireValidSignature) {
|
|
81
|
+
const valid = await this.verifyMetadataSignature(metadata);
|
|
82
|
+
if (!valid) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (!this.config.allowStaleMetadata && this.isStale(metadata)) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
return { metadata, host: peer.host, port: peer.port };
|
|
90
|
+
}
|
|
60
91
|
async verifyMetadataSignature(metadata) {
|
|
61
92
|
const dataToVerify = encodeMetadataForSigning(metadata);
|
|
62
93
|
const publicKey = hexToBytes(metadata.peerId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer-lookup.js","sourceRoot":"","sources":["../../src/discovery/peer-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,
|
|
1
|
+
{"version":3,"file":"peer-lookup.js","sourceRoot":"","sources":["../../src/discovery/peer-lookup.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { AntseedNode, type NodeConfig, type BuyerPaymentConfig, type NodePaymentsConfig, type RequestStreamCallbacks, type RequestStreamResponseMetadata, } from './node.js';
|
|
2
|
-
export type { Provider, ProviderStreamCallbacks
|
|
2
|
+
export type { Provider, ProviderStreamCallbacks } from './interfaces/seller-provider.js';
|
|
3
3
|
export type { Router } from './interfaces/buyer-router.js';
|
|
4
4
|
export * from './types/index.js';
|
|
5
5
|
export { loadOrCreateIdentity, type Identity } from './p2p/identity.js';
|
|
@@ -19,8 +19,6 @@ export { resolveProvider } from './proxy/provider-detection.js';
|
|
|
19
19
|
export { detectRequestModelApiProtocol, inferProviderDefaultModelApiProtocols, selectTargetProtocolForRequest, transformAnthropicMessagesRequestToOpenAIChat, transformOpenAIChatResponseToAnthropicMessage, type TargetProtocolSelection, type AnthropicToOpenAIRequestTransformResult, } from './proxy/model-api-adapter.js';
|
|
20
20
|
export { DefaultRouter, type DefaultRouterConfig } from './routing/default-router.js';
|
|
21
21
|
export type { AntseedPlugin, AntseedProviderPlugin, AntseedRouterPlugin, PluginConfigKey, ConfigField } from './interfaces/plugin.js';
|
|
22
|
-
export { ProfileManager } from './discovery/profile-manager.js';
|
|
23
|
-
export type { PeerProfile, ProfileCapability } from './types/peer-profile.js';
|
|
24
22
|
export { TrustScoreEngine } from './reputation/trust-engine.js';
|
|
25
23
|
export { UptimeTracker } from './reputation/uptime-tracker.js';
|
|
26
24
|
export { computeTrustScore, DEFAULT_TRUST_WEIGHTS } from './reputation/trust-score.js';
|
|
@@ -30,8 +28,6 @@ export { ReportManager } from './reputation/report-manager.js';
|
|
|
30
28
|
export type { PeerReport, ReportReason, ReportEvidence, ReportStatus } from './types/report.js';
|
|
31
29
|
export { RatingManager } from './reputation/rating-manager.js';
|
|
32
30
|
export type { PeerRating, RatingDimension, AggregateRating } from './types/rating.js';
|
|
33
|
-
export { ProfileSearchIndex } from './discovery/profile-search.js';
|
|
34
|
-
export type { ProfileSearchQuery, ProfileSearchResult } from './discovery/profile-search.js';
|
|
35
31
|
export { encryptValue, decryptValue, deriveMachineKey, generateSalt } from './config/encryption.js';
|
|
36
32
|
export { loadPluginConfig, savePluginConfig, addInstance, removeInstance, getInstance, getInstances, updateInstanceConfig, } from './config/plugin-config-manager.js';
|
|
37
33
|
export { loadPluginModule, loadAllPlugins, type LoadedProvider, type LoadedRouter, } from './config/plugin-loader.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,QAAQ,EAAE,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -18,15 +18,12 @@ export { ProxyMux } from './proxy/proxy-mux.js';
|
|
|
18
18
|
export { resolveProvider } from './proxy/provider-detection.js';
|
|
19
19
|
export { detectRequestModelApiProtocol, inferProviderDefaultModelApiProtocols, selectTargetProtocolForRequest, transformAnthropicMessagesRequestToOpenAIChat, transformOpenAIChatResponseToAnthropicMessage, } from './proxy/model-api-adapter.js';
|
|
20
20
|
export { DefaultRouter } from './routing/default-router.js';
|
|
21
|
-
export { ProfileManager } from './discovery/profile-manager.js';
|
|
22
21
|
// Reputation
|
|
23
22
|
export { TrustScoreEngine } from './reputation/trust-engine.js';
|
|
24
23
|
export { UptimeTracker } from './reputation/uptime-tracker.js';
|
|
25
24
|
export { computeTrustScore, DEFAULT_TRUST_WEIGHTS } from './reputation/trust-score.js';
|
|
26
25
|
export { ReportManager } from './reputation/report-manager.js';
|
|
27
26
|
export { RatingManager } from './reputation/rating-manager.js';
|
|
28
|
-
// Profile search
|
|
29
|
-
export { ProfileSearchIndex } from './discovery/profile-search.js';
|
|
30
27
|
// Plugin config & loading
|
|
31
28
|
export { encryptValue, decryptValue, deriveMachineKey, generateSalt } from './config/encryption.js';
|
|
32
29
|
export { loadPluginConfig, savePluginConfig, addInstance, removeInstance, getInstance, getInstances, updateInstanceConfig, } from './config/plugin-config-manager.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EACL,WAAW,GAMZ,MAAM,WAAW,CAAC;AAInB,+BAA+B;AAC/B,cAAc,kBAAkB,CAAC;AAEjC,uCAAuC;AACvC,OAAO,EAAE,oBAAoB,EAAiB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,GAI/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,cAAc,EAA6B,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAyB,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,YAAY,EAA4C,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,6BAA6B,EAC7B,qCAAqC,EACrC,8BAA8B,EAC9B,6CAA6C,EAC7C,6CAA6C,GAG9C,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAA4B,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EACL,WAAW,GAMZ,MAAM,WAAW,CAAC;AAInB,+BAA+B;AAC/B,cAAc,kBAAkB,CAAC;AAEjC,uCAAuC;AACvC,OAAO,EAAE,oBAAoB,EAAiB,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,GAI/B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,cAAc,EAA6B,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAyB,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,YAAY,EAA4C,MAAM,wBAAwB,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EACL,6BAA6B,EAC7B,qCAAqC,EACrC,8BAA8B,EAC9B,6CAA6C,EAC7C,6CAA6C,GAG9C,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAA4B,MAAM,6BAA6B,CAAC;AAItF,aAAa;AACb,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAGvF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAG/D,0BAA0B;AAC1B,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACnG,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,WAAW,EACX,YAAY,EACZ,oBAAoB,GACrB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,gBAAgB,EAChB,cAAc,GAGf,MAAM,2BAA2B,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { SerializedHttpRequest, SerializedHttpResponse, SerializedHttpResponseChunk } from '../types/http.js';
|
|
2
|
-
import type { ProviderCapability } from '../types/capability.js';
|
|
3
2
|
import type { ModelApiProtocol } from '../types/model-api.js';
|
|
4
3
|
export interface ProviderTokenPricingUsdPerMillion {
|
|
5
4
|
inputUsdPerMillion: number;
|
|
@@ -48,39 +47,9 @@ export interface Provider {
|
|
|
48
47
|
current: number;
|
|
49
48
|
max: number;
|
|
50
49
|
};
|
|
51
|
-
/** Capabilities beyond inference (optional — defaults to ['inference']) */
|
|
52
|
-
capabilities?: ProviderCapability[];
|
|
53
|
-
/** Handle a long-running agent task. Returns an async iterable of events. */
|
|
54
|
-
handleTask?(task: TaskRequest): AsyncIterable<TaskEvent>;
|
|
55
|
-
/** Handle a one-shot skill request. */
|
|
56
|
-
handleSkill?(skill: SkillRequest): Promise<SkillResponse>;
|
|
57
50
|
}
|
|
58
51
|
export interface ProviderStreamCallbacks {
|
|
59
52
|
onResponseStart: (response: SerializedHttpResponse) => void;
|
|
60
53
|
onResponseChunk: (chunk: SerializedHttpResponseChunk) => void;
|
|
61
54
|
}
|
|
62
|
-
export interface TaskRequest {
|
|
63
|
-
taskId: string;
|
|
64
|
-
capability: ProviderCapability;
|
|
65
|
-
input: unknown;
|
|
66
|
-
metadata?: Record<string, unknown>;
|
|
67
|
-
}
|
|
68
|
-
export interface TaskEvent {
|
|
69
|
-
taskId: string;
|
|
70
|
-
type: 'status' | 'progress' | 'intermediate' | 'final';
|
|
71
|
-
data: unknown;
|
|
72
|
-
timestamp: number;
|
|
73
|
-
}
|
|
74
|
-
export interface SkillRequest {
|
|
75
|
-
skillId: string;
|
|
76
|
-
capability: ProviderCapability;
|
|
77
|
-
input: unknown;
|
|
78
|
-
inputSchema?: Record<string, unknown>;
|
|
79
|
-
}
|
|
80
|
-
export interface SkillResponse {
|
|
81
|
-
skillId: string;
|
|
82
|
-
output: unknown;
|
|
83
|
-
outputSchema?: Record<string, unknown>;
|
|
84
|
-
durationMs: number;
|
|
85
|
-
}
|
|
86
55
|
//# sourceMappingURL=seller-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seller-provider.d.ts","sourceRoot":"","sources":["../../src/interfaces/seller-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACnH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"seller-provider.d.ts","sourceRoot":"","sources":["../../src/interfaces/seller-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACnH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,WAAW,iCAAiC;IAChD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,iCAAiC,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iCAAiC,CAAC,CAAC;CAC5D;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAC;IAEb,0GAA0G;IAC1G,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,qFAAqF;IACrF,OAAO,EAAE,eAAe,CAAC;IAEzB,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAE3C,iFAAiF;IACjF,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAEvD,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAE3E;;;;;;OAMG;IACH,mBAAmB,CAAC,CAClB,GAAG,EAAE,qBAAqB,EAC1B,SAAS,EAAE,uBAAuB,GACjC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEnC,sEAAsE;IACtE,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvB,2DAA2D;IAC3D,WAAW,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAED,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,CAAC,QAAQ,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAC5D,eAAe,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;CAC/D"}
|
package/dist/node.d.ts
CHANGED
|
@@ -2,11 +2,11 @@ import { EventEmitter } from "node:events";
|
|
|
2
2
|
import type { Identity } from "./p2p/identity.js";
|
|
3
3
|
import type { PeerInfo } from "./types/peer.js";
|
|
4
4
|
import { type SerializedHttpRequest, type SerializedHttpResponse, type SerializedHttpResponseChunk } from "./types/http.js";
|
|
5
|
-
import type { Provider, ProviderStreamCallbacks
|
|
5
|
+
import type { Provider, ProviderStreamCallbacks } from "./interfaces/seller-provider.js";
|
|
6
6
|
import type { Router } from "./interfaces/buyer-router.js";
|
|
7
7
|
import { type PaymentConfig, type PaymentMethod } from "./payments/index.js";
|
|
8
8
|
import { BuyerPaymentManager, type BuyerPaymentConfig } from "./payments/buyer-payment-manager.js";
|
|
9
|
-
export type { Provider, ProviderStreamCallbacks
|
|
9
|
+
export type { Provider, ProviderStreamCallbacks };
|
|
10
10
|
export type { Router };
|
|
11
11
|
export type { BuyerPaymentConfig };
|
|
12
12
|
export interface NodePaymentsConfig {
|
|
@@ -126,8 +126,6 @@ export declare class AntseedNode extends EventEmitter {
|
|
|
126
126
|
sendRequest(peer: PeerInfo, req: SerializedHttpRequest): Promise<SerializedHttpResponse>;
|
|
127
127
|
sendRequestStream(peer: PeerInfo, req: SerializedHttpRequest, callbacks: RequestStreamCallbacks): Promise<SerializedHttpResponse>;
|
|
128
128
|
private _sendRequestInternal;
|
|
129
|
-
sendTask(peer: PeerInfo, task: TaskRequest): AsyncIterable<TaskEvent>;
|
|
130
|
-
sendSkill(peer: PeerInfo, skill: SkillRequest): Promise<SkillResponse>;
|
|
131
129
|
private _createDHTConfig;
|
|
132
130
|
private _wireConnection;
|
|
133
131
|
private _startSeller;
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EACjC,MAAM,iBAAiB,CAAC;AA8BzB,OAAO,KAAK,EACV,QAAQ,EACR,uBAAuB,
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/dist/node.js
CHANGED
|
@@ -210,12 +210,16 @@ export class AntseedNode extends EventEmitter {
|
|
|
210
210
|
if (!this._peerLookup) {
|
|
211
211
|
throw new Error("Node not started or not in buyer mode");
|
|
212
212
|
}
|
|
213
|
-
|
|
214
|
-
//
|
|
215
|
-
//
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
213
|
+
debugLog(`[Node] Discovering peers (model: "${model ?? "*"}")...`);
|
|
214
|
+
// Query model-level DHT topic when a model is specified — returns only peers
|
|
215
|
+
// that explicitly announced that model. Fall back to wildcard if no results.
|
|
216
|
+
let results = model
|
|
217
|
+
? await this._peerLookup.findByModel(model)
|
|
218
|
+
: await this._peerLookup.findSellers("*");
|
|
219
|
+
if (model && results.length === 0) {
|
|
220
|
+
debugLog(`[Node] No model-topic results for "${model}", falling back to wildcard`);
|
|
221
|
+
results = await this._peerLookup.findSellers("*");
|
|
222
|
+
}
|
|
219
223
|
debugLog(`[Node] DHT returned ${results.length} result(s)`);
|
|
220
224
|
// Deduplicate by peerId (DHT can return the same peer from multiple topic lookups)
|
|
221
225
|
const seen = new Set();
|
|
@@ -372,44 +376,6 @@ export class AntseedNode extends EventEmitter {
|
|
|
372
376
|
});
|
|
373
377
|
});
|
|
374
378
|
}
|
|
375
|
-
async *sendTask(peer, task) {
|
|
376
|
-
const req = {
|
|
377
|
-
requestId: task.taskId,
|
|
378
|
-
method: "POST",
|
|
379
|
-
path: "/v1/task",
|
|
380
|
-
headers: {
|
|
381
|
-
"content-type": "application/json",
|
|
382
|
-
"x-antseed-capability": "task",
|
|
383
|
-
},
|
|
384
|
-
body: new TextEncoder().encode(JSON.stringify(task)),
|
|
385
|
-
};
|
|
386
|
-
const response = await this.sendRequest(peer, req);
|
|
387
|
-
const bodyText = new TextDecoder().decode(response.body);
|
|
388
|
-
const parsed = JSON.parse(bodyText);
|
|
389
|
-
if (Array.isArray(parsed)) {
|
|
390
|
-
for (const event of parsed) {
|
|
391
|
-
yield event;
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
else {
|
|
395
|
-
yield parsed;
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
async sendSkill(peer, skill) {
|
|
399
|
-
const req = {
|
|
400
|
-
requestId: skill.skillId,
|
|
401
|
-
method: "POST",
|
|
402
|
-
path: "/v1/skill",
|
|
403
|
-
headers: {
|
|
404
|
-
"content-type": "application/json",
|
|
405
|
-
"x-antseed-capability": "skill",
|
|
406
|
-
},
|
|
407
|
-
body: new TextEncoder().encode(JSON.stringify(skill)),
|
|
408
|
-
};
|
|
409
|
-
const response = await this.sendRequest(peer, req);
|
|
410
|
-
const bodyText = new TextDecoder().decode(response.body);
|
|
411
|
-
return JSON.parse(bodyText);
|
|
412
|
-
}
|
|
413
379
|
_createDHTConfig(port, bootstrapNodes) {
|
|
414
380
|
return {
|
|
415
381
|
peerId: this._identity.peerId,
|
|
@@ -645,6 +611,7 @@ export class AntseedNode extends EventEmitter {
|
|
|
645
611
|
// Track active seller session at request start so runtime state reflects
|
|
646
612
|
// in-flight work immediately (not only after metering persistence).
|
|
647
613
|
this._getOrCreateSellerSession(buyerPeerId, provider.name);
|
|
614
|
+
request.headers['x-antseed-buyer-peer-id'] = buyerPeerId;
|
|
648
615
|
debugLog(`[Node] Routing to provider "${provider.name}"`);
|
|
649
616
|
const startTime = Date.now();
|
|
650
617
|
let statusCode = 500;
|
|
@@ -717,90 +684,6 @@ export class AntseedNode extends EventEmitter {
|
|
|
717
684
|
this.emit("connection", conn);
|
|
718
685
|
}
|
|
719
686
|
async _executeProviderRequest(provider, request, streamCallbacks) {
|
|
720
|
-
const capability = request.headers["x-antseed-capability"]?.toLowerCase();
|
|
721
|
-
const isTask = capability === "task" || request.path === "/v1/task";
|
|
722
|
-
const isSkill = capability === "skill" || request.path === "/v1/skill";
|
|
723
|
-
if (isSkill) {
|
|
724
|
-
if (!provider.handleSkill) {
|
|
725
|
-
return {
|
|
726
|
-
requestId: request.requestId,
|
|
727
|
-
statusCode: 501,
|
|
728
|
-
headers: { "content-type": "application/json" },
|
|
729
|
-
body: new TextEncoder().encode(JSON.stringify({ error: "Provider does not support skill capability" })),
|
|
730
|
-
};
|
|
731
|
-
}
|
|
732
|
-
const parsed = this._parseJsonBody(request.body);
|
|
733
|
-
if (!parsed || typeof parsed !== "object") {
|
|
734
|
-
return {
|
|
735
|
-
requestId: request.requestId,
|
|
736
|
-
statusCode: 400,
|
|
737
|
-
headers: { "content-type": "application/json" },
|
|
738
|
-
body: new TextEncoder().encode(JSON.stringify({ error: "Invalid skill payload" })),
|
|
739
|
-
};
|
|
740
|
-
}
|
|
741
|
-
const raw = parsed;
|
|
742
|
-
const skillReq = {
|
|
743
|
-
skillId: typeof raw["skillId"] === "string" ? raw["skillId"] : request.requestId,
|
|
744
|
-
capability: typeof raw["capability"] === "string" ? raw["capability"] : "skill",
|
|
745
|
-
input: raw["input"] ?? {},
|
|
746
|
-
inputSchema: (raw["inputSchema"] && typeof raw["inputSchema"] === "object")
|
|
747
|
-
? raw["inputSchema"]
|
|
748
|
-
: undefined,
|
|
749
|
-
};
|
|
750
|
-
const skillResponse = await provider.handleSkill(skillReq);
|
|
751
|
-
return {
|
|
752
|
-
requestId: request.requestId,
|
|
753
|
-
statusCode: 200,
|
|
754
|
-
headers: { "content-type": "application/json" },
|
|
755
|
-
body: new TextEncoder().encode(JSON.stringify(skillResponse)),
|
|
756
|
-
};
|
|
757
|
-
}
|
|
758
|
-
if (isTask) {
|
|
759
|
-
if (!provider.handleTask) {
|
|
760
|
-
return {
|
|
761
|
-
requestId: request.requestId,
|
|
762
|
-
statusCode: 501,
|
|
763
|
-
headers: { "content-type": "application/json" },
|
|
764
|
-
body: new TextEncoder().encode(JSON.stringify({ error: "Provider does not support task capability" })),
|
|
765
|
-
};
|
|
766
|
-
}
|
|
767
|
-
const parsed = this._parseJsonBody(request.body);
|
|
768
|
-
if (!parsed || typeof parsed !== "object") {
|
|
769
|
-
return {
|
|
770
|
-
requestId: request.requestId,
|
|
771
|
-
statusCode: 400,
|
|
772
|
-
headers: { "content-type": "application/json" },
|
|
773
|
-
body: new TextEncoder().encode(JSON.stringify({ error: "Invalid task payload" })),
|
|
774
|
-
};
|
|
775
|
-
}
|
|
776
|
-
const raw = parsed;
|
|
777
|
-
const taskReq = {
|
|
778
|
-
taskId: typeof raw["taskId"] === "string" ? raw["taskId"] : request.requestId,
|
|
779
|
-
capability: typeof raw["capability"] === "string" ? raw["capability"] : "agent",
|
|
780
|
-
input: raw["input"] ?? {},
|
|
781
|
-
metadata: (raw["metadata"] && typeof raw["metadata"] === "object")
|
|
782
|
-
? raw["metadata"]
|
|
783
|
-
: undefined,
|
|
784
|
-
};
|
|
785
|
-
const events = [];
|
|
786
|
-
for await (const event of provider.handleTask(taskReq)) {
|
|
787
|
-
events.push(event);
|
|
788
|
-
}
|
|
789
|
-
const payload = events.length <= 1
|
|
790
|
-
? (events[0] ?? {
|
|
791
|
-
taskId: taskReq.taskId,
|
|
792
|
-
type: "final",
|
|
793
|
-
data: {},
|
|
794
|
-
timestamp: Date.now(),
|
|
795
|
-
})
|
|
796
|
-
: events;
|
|
797
|
-
return {
|
|
798
|
-
requestId: request.requestId,
|
|
799
|
-
statusCode: 200,
|
|
800
|
-
headers: { "content-type": "application/json" },
|
|
801
|
-
body: new TextEncoder().encode(JSON.stringify(payload)),
|
|
802
|
-
};
|
|
803
|
-
}
|
|
804
687
|
if (streamCallbacks && provider.handleRequestStream) {
|
|
805
688
|
return provider.handleRequestStream(request, streamCallbacks);
|
|
806
689
|
}
|