@antseed/node 0.1.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.
Files changed (443) hide show
  1. package/README.md +411 -0
  2. package/contracts/AntseedEscrow.sol +310 -0
  3. package/contracts/MockUSDC.sol +64 -0
  4. package/contracts/README.md +102 -0
  5. package/dist/config/encryption.d.ts +17 -0
  6. package/dist/config/encryption.d.ts.map +1 -0
  7. package/dist/config/encryption.js +49 -0
  8. package/dist/config/encryption.js.map +1 -0
  9. package/dist/config/plugin-config-manager.d.ts +31 -0
  10. package/dist/config/plugin-config-manager.d.ts.map +1 -0
  11. package/dist/config/plugin-config-manager.js +135 -0
  12. package/dist/config/plugin-config-manager.js.map +1 -0
  13. package/dist/config/plugin-loader.d.ts +25 -0
  14. package/dist/config/plugin-loader.d.ts.map +1 -0
  15. package/dist/config/plugin-loader.js +64 -0
  16. package/dist/config/plugin-loader.js.map +1 -0
  17. package/dist/discovery/announcer.d.ts +44 -0
  18. package/dist/discovery/announcer.d.ts.map +1 -0
  19. package/dist/discovery/announcer.js +129 -0
  20. package/dist/discovery/announcer.js.map +1 -0
  21. package/dist/discovery/bootstrap.d.ts +13 -0
  22. package/dist/discovery/bootstrap.d.ts.map +1 -0
  23. package/dist/discovery/bootstrap.js +39 -0
  24. package/dist/discovery/bootstrap.js.map +1 -0
  25. package/dist/discovery/default-metadata-resolver.d.ts +16 -0
  26. package/dist/discovery/default-metadata-resolver.d.ts.map +1 -0
  27. package/dist/discovery/default-metadata-resolver.js +16 -0
  28. package/dist/discovery/default-metadata-resolver.js.map +1 -0
  29. package/dist/discovery/dht-health.d.ts +38 -0
  30. package/dist/discovery/dht-health.d.ts.map +1 -0
  31. package/dist/discovery/dht-health.js +101 -0
  32. package/dist/discovery/dht-health.js.map +1 -0
  33. package/dist/discovery/dht-node.d.ts +34 -0
  34. package/dist/discovery/dht-node.d.ts.map +1 -0
  35. package/dist/discovery/dht-node.js +168 -0
  36. package/dist/discovery/dht-node.js.map +1 -0
  37. package/dist/discovery/http-metadata-resolver.d.ts +15 -0
  38. package/dist/discovery/http-metadata-resolver.d.ts.map +1 -0
  39. package/dist/discovery/http-metadata-resolver.js +33 -0
  40. package/dist/discovery/http-metadata-resolver.js.map +1 -0
  41. package/dist/discovery/index.d.ts +16 -0
  42. package/dist/discovery/index.d.ts.map +1 -0
  43. package/dist/discovery/index.js +15 -0
  44. package/dist/discovery/index.js.map +1 -0
  45. package/dist/discovery/metadata-codec.d.ts +22 -0
  46. package/dist/discovery/metadata-codec.d.ts.map +1 -0
  47. package/dist/discovery/metadata-codec.js +390 -0
  48. package/dist/discovery/metadata-codec.js.map +1 -0
  49. package/dist/discovery/metadata-resolver.d.ts +9 -0
  50. package/dist/discovery/metadata-resolver.d.ts.map +1 -0
  51. package/dist/discovery/metadata-resolver.js +2 -0
  52. package/dist/discovery/metadata-resolver.js.map +1 -0
  53. package/dist/discovery/metadata-server.d.ts +16 -0
  54. package/dist/discovery/metadata-server.d.ts.map +1 -0
  55. package/dist/discovery/metadata-server.js +59 -0
  56. package/dist/discovery/metadata-server.js.map +1 -0
  57. package/dist/discovery/metadata-validator.d.ts +12 -0
  58. package/dist/discovery/metadata-validator.d.ts.map +1 -0
  59. package/dist/discovery/metadata-validator.js +153 -0
  60. package/dist/discovery/metadata-validator.js.map +1 -0
  61. package/dist/discovery/peer-lookup.d.ts +26 -0
  62. package/dist/discovery/peer-lookup.d.ts.map +1 -0
  63. package/dist/discovery/peer-lookup.js +86 -0
  64. package/dist/discovery/peer-lookup.js.map +1 -0
  65. package/dist/discovery/peer-metadata.d.ts +31 -0
  66. package/dist/discovery/peer-metadata.d.ts.map +1 -0
  67. package/dist/discovery/peer-metadata.js +2 -0
  68. package/dist/discovery/peer-metadata.js.map +1 -0
  69. package/dist/discovery/peer-selector.d.ts +33 -0
  70. package/dist/discovery/peer-selector.d.ts.map +1 -0
  71. package/dist/discovery/peer-selector.js +80 -0
  72. package/dist/discovery/peer-selector.js.map +1 -0
  73. package/dist/discovery/profile-manager.d.ts +50 -0
  74. package/dist/discovery/profile-manager.d.ts.map +1 -0
  75. package/dist/discovery/profile-manager.js +105 -0
  76. package/dist/discovery/profile-manager.js.map +1 -0
  77. package/dist/discovery/profile-search.d.ts +27 -0
  78. package/dist/discovery/profile-search.d.ts.map +1 -0
  79. package/dist/discovery/profile-search.js +75 -0
  80. package/dist/discovery/profile-search.js.map +1 -0
  81. package/dist/discovery/reputation-verifier.d.ts +25 -0
  82. package/dist/discovery/reputation-verifier.d.ts.map +1 -0
  83. package/dist/discovery/reputation-verifier.js +27 -0
  84. package/dist/discovery/reputation-verifier.js.map +1 -0
  85. package/dist/index.d.ts +37 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +32 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/interfaces/buyer-router.d.ts +21 -0
  90. package/dist/interfaces/buyer-router.d.ts.map +1 -0
  91. package/dist/interfaces/buyer-router.js +2 -0
  92. package/dist/interfaces/buyer-router.js.map +1 -0
  93. package/dist/interfaces/plugin.d.ts +31 -0
  94. package/dist/interfaces/plugin.d.ts.map +1 -0
  95. package/dist/interfaces/plugin.js +2 -0
  96. package/dist/interfaces/plugin.js.map +1 -0
  97. package/dist/interfaces/seller-provider.d.ts +69 -0
  98. package/dist/interfaces/seller-provider.d.ts.map +1 -0
  99. package/dist/interfaces/seller-provider.js +2 -0
  100. package/dist/interfaces/seller-provider.js.map +1 -0
  101. package/dist/metering/index.d.ts +7 -0
  102. package/dist/metering/index.d.ts.map +1 -0
  103. package/dist/metering/index.js +7 -0
  104. package/dist/metering/index.js.map +1 -0
  105. package/dist/metering/receipt-generator.d.ts +49 -0
  106. package/dist/metering/receipt-generator.d.ts.map +1 -0
  107. package/dist/metering/receipt-generator.js +74 -0
  108. package/dist/metering/receipt-generator.js.map +1 -0
  109. package/dist/metering/receipt-verifier.d.ts +52 -0
  110. package/dist/metering/receipt-verifier.d.ts.map +1 -0
  111. package/dist/metering/receipt-verifier.js +63 -0
  112. package/dist/metering/receipt-verifier.js.map +1 -0
  113. package/dist/metering/session-tracker.d.ts +59 -0
  114. package/dist/metering/session-tracker.d.ts.map +1 -0
  115. package/dist/metering/session-tracker.js +119 -0
  116. package/dist/metering/session-tracker.js.map +1 -0
  117. package/dist/metering/storage.d.ts +72 -0
  118. package/dist/metering/storage.d.ts.map +1 -0
  119. package/dist/metering/storage.js +446 -0
  120. package/dist/metering/storage.js.map +1 -0
  121. package/dist/metering/token-counter.d.ts +50 -0
  122. package/dist/metering/token-counter.d.ts.map +1 -0
  123. package/dist/metering/token-counter.js +96 -0
  124. package/dist/metering/token-counter.js.map +1 -0
  125. package/dist/metering/usage-aggregator.d.ts +46 -0
  126. package/dist/metering/usage-aggregator.d.ts.map +1 -0
  127. package/dist/metering/usage-aggregator.js +170 -0
  128. package/dist/metering/usage-aggregator.js.map +1 -0
  129. package/dist/node.d.ts +179 -0
  130. package/dist/node.d.ts.map +1 -0
  131. package/dist/node.js +1328 -0
  132. package/dist/node.js.map +1 -0
  133. package/dist/p2p/connection-auth.d.ts +35 -0
  134. package/dist/p2p/connection-auth.d.ts.map +1 -0
  135. package/dist/p2p/connection-auth.js +102 -0
  136. package/dist/p2p/connection-auth.js.map +1 -0
  137. package/dist/p2p/connection-manager.d.ts +101 -0
  138. package/dist/p2p/connection-manager.d.ts.map +1 -0
  139. package/dist/p2p/connection-manager.js +726 -0
  140. package/dist/p2p/connection-manager.js.map +1 -0
  141. package/dist/p2p/handshake.d.ts +47 -0
  142. package/dist/p2p/handshake.d.ts.map +1 -0
  143. package/dist/p2p/handshake.js +107 -0
  144. package/dist/p2p/handshake.js.map +1 -0
  145. package/dist/p2p/ice-config.d.ts +27 -0
  146. package/dist/p2p/ice-config.d.ts.map +1 -0
  147. package/dist/p2p/ice-config.js +43 -0
  148. package/dist/p2p/ice-config.js.map +1 -0
  149. package/dist/p2p/identity.d.ts +27 -0
  150. package/dist/p2p/identity.d.ts.map +1 -0
  151. package/dist/p2p/identity.js +76 -0
  152. package/dist/p2p/identity.js.map +1 -0
  153. package/dist/p2p/index.d.ts +12 -0
  154. package/dist/p2p/index.d.ts.map +1 -0
  155. package/dist/p2p/index.js +11 -0
  156. package/dist/p2p/index.js.map +1 -0
  157. package/dist/p2p/keepalive.d.ts +49 -0
  158. package/dist/p2p/keepalive.d.ts.map +1 -0
  159. package/dist/p2p/keepalive.js +93 -0
  160. package/dist/p2p/keepalive.js.map +1 -0
  161. package/dist/p2p/message-protocol.d.ts +50 -0
  162. package/dist/p2p/message-protocol.d.ts.map +1 -0
  163. package/dist/p2p/message-protocol.js +134 -0
  164. package/dist/p2p/message-protocol.js.map +1 -0
  165. package/dist/p2p/nat-traversal.d.ts +51 -0
  166. package/dist/p2p/nat-traversal.d.ts.map +1 -0
  167. package/dist/p2p/nat-traversal.js +135 -0
  168. package/dist/p2p/nat-traversal.js.map +1 -0
  169. package/dist/p2p/payment-codec.d.ts +20 -0
  170. package/dist/p2p/payment-codec.d.ts.map +1 -0
  171. package/dist/p2p/payment-codec.js +130 -0
  172. package/dist/p2p/payment-codec.js.map +1 -0
  173. package/dist/p2p/payment-mux.d.ts +49 -0
  174. package/dist/p2p/payment-mux.d.ts.map +1 -0
  175. package/dist/p2p/payment-mux.js +131 -0
  176. package/dist/p2p/payment-mux.js.map +1 -0
  177. package/dist/p2p/reconnect.d.ts +48 -0
  178. package/dist/p2p/reconnect.d.ts.map +1 -0
  179. package/dist/p2p/reconnect.js +89 -0
  180. package/dist/p2p/reconnect.js.map +1 -0
  181. package/dist/payments/balance-manager.d.ts +17 -0
  182. package/dist/payments/balance-manager.d.ts.map +1 -0
  183. package/dist/payments/balance-manager.js +54 -0
  184. package/dist/payments/balance-manager.js.map +1 -0
  185. package/dist/payments/buyer-payment-manager.d.ts +122 -0
  186. package/dist/payments/buyer-payment-manager.d.ts.map +1 -0
  187. package/dist/payments/buyer-payment-manager.js +280 -0
  188. package/dist/payments/buyer-payment-manager.js.map +1 -0
  189. package/dist/payments/disputes.d.ts +18 -0
  190. package/dist/payments/disputes.d.ts.map +1 -0
  191. package/dist/payments/disputes.js +47 -0
  192. package/dist/payments/disputes.js.map +1 -0
  193. package/dist/payments/evm/escrow-client.d.ts +61 -0
  194. package/dist/payments/evm/escrow-client.d.ts.map +1 -0
  195. package/dist/payments/evm/escrow-client.js +170 -0
  196. package/dist/payments/evm/escrow-client.js.map +1 -0
  197. package/dist/payments/evm/keypair.d.ts +21 -0
  198. package/dist/payments/evm/keypair.d.ts.map +1 -0
  199. package/dist/payments/evm/keypair.js +29 -0
  200. package/dist/payments/evm/keypair.js.map +1 -0
  201. package/dist/payments/evm/signatures.d.ts +11 -0
  202. package/dist/payments/evm/signatures.d.ts.map +1 -0
  203. package/dist/payments/evm/signatures.js +56 -0
  204. package/dist/payments/evm/signatures.js.map +1 -0
  205. package/dist/payments/evm/wallet.d.ts +5 -0
  206. package/dist/payments/evm/wallet.d.ts.map +1 -0
  207. package/dist/payments/evm/wallet.js +31 -0
  208. package/dist/payments/evm/wallet.js.map +1 -0
  209. package/dist/payments/index.d.ts +13 -0
  210. package/dist/payments/index.d.ts.map +1 -0
  211. package/dist/payments/index.js +14 -0
  212. package/dist/payments/index.js.map +1 -0
  213. package/dist/payments/settlement.d.ts +6 -0
  214. package/dist/payments/settlement.d.ts.map +1 -0
  215. package/dist/payments/settlement.js +25 -0
  216. package/dist/payments/settlement.js.map +1 -0
  217. package/dist/payments/types.d.ts +66 -0
  218. package/dist/payments/types.d.ts.map +1 -0
  219. package/dist/payments/types.js +2 -0
  220. package/dist/payments/types.js.map +1 -0
  221. package/dist/proxy/index.d.ts +4 -0
  222. package/dist/proxy/index.d.ts.map +1 -0
  223. package/dist/proxy/index.js +4 -0
  224. package/dist/proxy/index.js.map +1 -0
  225. package/dist/proxy/provider-detection.d.ts +20 -0
  226. package/dist/proxy/provider-detection.d.ts.map +1 -0
  227. package/dist/proxy/provider-detection.js +61 -0
  228. package/dist/proxy/provider-detection.js.map +1 -0
  229. package/dist/proxy/proxy-mux.d.ts +35 -0
  230. package/dist/proxy/proxy-mux.d.ts.map +1 -0
  231. package/dist/proxy/proxy-mux.js +137 -0
  232. package/dist/proxy/proxy-mux.js.map +1 -0
  233. package/dist/proxy/request-codec.d.ts +33 -0
  234. package/dist/proxy/request-codec.d.ts.map +1 -0
  235. package/dist/proxy/request-codec.js +238 -0
  236. package/dist/proxy/request-codec.js.map +1 -0
  237. package/dist/reputation/index.d.ts +7 -0
  238. package/dist/reputation/index.d.ts.map +1 -0
  239. package/dist/reputation/index.js +6 -0
  240. package/dist/reputation/index.js.map +1 -0
  241. package/dist/reputation/rating-manager.d.ts +20 -0
  242. package/dist/reputation/rating-manager.d.ts.map +1 -0
  243. package/dist/reputation/rating-manager.js +91 -0
  244. package/dist/reputation/rating-manager.js.map +1 -0
  245. package/dist/reputation/report-manager.d.ts +21 -0
  246. package/dist/reputation/report-manager.d.ts.map +1 -0
  247. package/dist/reputation/report-manager.js +70 -0
  248. package/dist/reputation/report-manager.js.map +1 -0
  249. package/dist/reputation/trust-engine.d.ts +36 -0
  250. package/dist/reputation/trust-engine.d.ts.map +1 -0
  251. package/dist/reputation/trust-engine.js +95 -0
  252. package/dist/reputation/trust-engine.js.map +1 -0
  253. package/dist/reputation/trust-score.d.ts +43 -0
  254. package/dist/reputation/trust-score.d.ts.map +1 -0
  255. package/dist/reputation/trust-score.js +34 -0
  256. package/dist/reputation/trust-score.js.map +1 -0
  257. package/dist/reputation/uptime-tracker.d.ts +51 -0
  258. package/dist/reputation/uptime-tracker.d.ts.map +1 -0
  259. package/dist/reputation/uptime-tracker.js +123 -0
  260. package/dist/reputation/uptime-tracker.js.map +1 -0
  261. package/dist/routing/default-router.d.ts +21 -0
  262. package/dist/routing/default-router.d.ts.map +1 -0
  263. package/dist/routing/default-router.js +60 -0
  264. package/dist/routing/default-router.js.map +1 -0
  265. package/dist/types/buyer.d.ts +36 -0
  266. package/dist/types/buyer.d.ts.map +1 -0
  267. package/dist/types/buyer.js +2 -0
  268. package/dist/types/buyer.js.map +1 -0
  269. package/dist/types/capability.d.ts +25 -0
  270. package/dist/types/capability.d.ts.map +1 -0
  271. package/dist/types/capability.js +2 -0
  272. package/dist/types/capability.js.map +1 -0
  273. package/dist/types/connection.d.ts +27 -0
  274. package/dist/types/connection.d.ts.map +1 -0
  275. package/dist/types/connection.js +11 -0
  276. package/dist/types/connection.js.map +1 -0
  277. package/dist/types/http.d.ts +19 -0
  278. package/dist/types/http.d.ts.map +1 -0
  279. package/dist/types/http.js +2 -0
  280. package/dist/types/http.js.map +1 -0
  281. package/dist/types/index.d.ts +15 -0
  282. package/dist/types/index.d.ts.map +1 -0
  283. package/dist/types/index.js +15 -0
  284. package/dist/types/index.js.map +1 -0
  285. package/dist/types/metering.d.ts +170 -0
  286. package/dist/types/metering.d.ts.map +1 -0
  287. package/dist/types/metering.js +2 -0
  288. package/dist/types/metering.js.map +1 -0
  289. package/dist/types/peer-profile.d.ts +24 -0
  290. package/dist/types/peer-profile.d.ts.map +1 -0
  291. package/dist/types/peer-profile.js +2 -0
  292. package/dist/types/peer-profile.js.map +1 -0
  293. package/dist/types/peer.d.ts +56 -0
  294. package/dist/types/peer.d.ts.map +1 -0
  295. package/dist/types/peer.js +11 -0
  296. package/dist/types/peer.js.map +1 -0
  297. package/dist/types/plugin-config.d.ts +31 -0
  298. package/dist/types/plugin-config.d.ts.map +1 -0
  299. package/dist/types/plugin-config.js +2 -0
  300. package/dist/types/plugin-config.js.map +1 -0
  301. package/dist/types/protocol.d.ts +141 -0
  302. package/dist/types/protocol.d.ts.map +1 -0
  303. package/dist/types/protocol.js +42 -0
  304. package/dist/types/protocol.js.map +1 -0
  305. package/dist/types/provider.d.ts +38 -0
  306. package/dist/types/provider.d.ts.map +1 -0
  307. package/dist/types/provider.js +11 -0
  308. package/dist/types/provider.js.map +1 -0
  309. package/dist/types/rating.d.ts +21 -0
  310. package/dist/types/rating.d.ts.map +1 -0
  311. package/dist/types/rating.js +2 -0
  312. package/dist/types/rating.js.map +1 -0
  313. package/dist/types/report.d.ts +20 -0
  314. package/dist/types/report.d.ts.map +1 -0
  315. package/dist/types/report.js +2 -0
  316. package/dist/types/report.js.map +1 -0
  317. package/dist/types/seller.d.ts +36 -0
  318. package/dist/types/seller.d.ts.map +1 -0
  319. package/dist/types/seller.js +2 -0
  320. package/dist/types/seller.js.map +1 -0
  321. package/dist/types/staking.d.ts +16 -0
  322. package/dist/types/staking.d.ts.map +1 -0
  323. package/dist/types/staking.js +6 -0
  324. package/dist/types/staking.js.map +1 -0
  325. package/dist/utils/debug.d.ts +4 -0
  326. package/dist/utils/debug.d.ts.map +1 -0
  327. package/dist/utils/debug.js +25 -0
  328. package/dist/utils/debug.js.map +1 -0
  329. package/dist/utils/hex.d.ts +3 -0
  330. package/dist/utils/hex.d.ts.map +1 -0
  331. package/dist/utils/hex.js +15 -0
  332. package/dist/utils/hex.js.map +1 -0
  333. package/package.json +62 -0
  334. package/scripts/ensure-node-native-modules.mjs +153 -0
  335. package/scripts/patch-ethers.js +44 -0
  336. package/src/config/encryption.test.ts +49 -0
  337. package/src/config/encryption.ts +53 -0
  338. package/src/config/plugin-config-manager.test.ts +92 -0
  339. package/src/config/plugin-config-manager.ts +153 -0
  340. package/src/config/plugin-loader.ts +90 -0
  341. package/src/discovery/announcer.ts +169 -0
  342. package/src/discovery/bootstrap.ts +57 -0
  343. package/src/discovery/default-metadata-resolver.ts +18 -0
  344. package/src/discovery/dht-health.ts +136 -0
  345. package/src/discovery/dht-node.ts +191 -0
  346. package/src/discovery/http-metadata-resolver.ts +47 -0
  347. package/src/discovery/index.ts +15 -0
  348. package/src/discovery/metadata-codec.ts +453 -0
  349. package/src/discovery/metadata-resolver.ts +7 -0
  350. package/src/discovery/metadata-server.ts +73 -0
  351. package/src/discovery/metadata-validator.ts +172 -0
  352. package/src/discovery/peer-lookup.ts +122 -0
  353. package/src/discovery/peer-metadata.ts +34 -0
  354. package/src/discovery/peer-selector.ts +134 -0
  355. package/src/discovery/profile-manager.ts +131 -0
  356. package/src/discovery/profile-search.ts +100 -0
  357. package/src/discovery/reputation-verifier.ts +54 -0
  358. package/src/index.ts +61 -0
  359. package/src/interfaces/buyer-router.ts +21 -0
  360. package/src/interfaces/plugin.ts +36 -0
  361. package/src/interfaces/seller-provider.ts +81 -0
  362. package/src/metering/index.ts +6 -0
  363. package/src/metering/receipt-generator.ts +105 -0
  364. package/src/metering/receipt-verifier.ts +102 -0
  365. package/src/metering/session-tracker.ts +145 -0
  366. package/src/metering/storage.ts +600 -0
  367. package/src/metering/token-counter.ts +127 -0
  368. package/src/metering/usage-aggregator.ts +236 -0
  369. package/src/node.ts +1698 -0
  370. package/src/p2p/connection-auth.ts +152 -0
  371. package/src/p2p/connection-manager.ts +916 -0
  372. package/src/p2p/handshake.ts +162 -0
  373. package/src/p2p/ice-config.ts +59 -0
  374. package/src/p2p/identity.ts +110 -0
  375. package/src/p2p/index.ts +11 -0
  376. package/src/p2p/keepalive.ts +118 -0
  377. package/src/p2p/message-protocol.ts +171 -0
  378. package/src/p2p/nat-traversal.ts +169 -0
  379. package/src/p2p/payment-codec.ts +165 -0
  380. package/src/p2p/payment-mux.ts +153 -0
  381. package/src/p2p/reconnect.ts +117 -0
  382. package/src/payments/balance-manager.ts +77 -0
  383. package/src/payments/buyer-payment-manager.ts +414 -0
  384. package/src/payments/disputes.ts +72 -0
  385. package/src/payments/evm/escrow-client.ts +263 -0
  386. package/src/payments/evm/keypair.ts +31 -0
  387. package/src/payments/evm/signatures.ts +103 -0
  388. package/src/payments/evm/wallet.ts +42 -0
  389. package/src/payments/index.ts +50 -0
  390. package/src/payments/settlement.ts +40 -0
  391. package/src/payments/types.ts +79 -0
  392. package/src/proxy/index.ts +3 -0
  393. package/src/proxy/provider-detection.ts +78 -0
  394. package/src/proxy/proxy-mux.ts +173 -0
  395. package/src/proxy/request-codec.ts +294 -0
  396. package/src/reputation/index.ts +6 -0
  397. package/src/reputation/rating-manager.ts +118 -0
  398. package/src/reputation/report-manager.ts +91 -0
  399. package/src/reputation/trust-engine.ts +120 -0
  400. package/src/reputation/trust-score.ts +74 -0
  401. package/src/reputation/uptime-tracker.ts +155 -0
  402. package/src/routing/default-router.ts +75 -0
  403. package/src/types/bittorrent-dht.d.ts +19 -0
  404. package/src/types/buyer.ts +37 -0
  405. package/src/types/capability.ts +34 -0
  406. package/src/types/connection.ts +29 -0
  407. package/src/types/http.ts +20 -0
  408. package/src/types/index.ts +14 -0
  409. package/src/types/metering.ts +175 -0
  410. package/src/types/nat-api.d.ts +29 -0
  411. package/src/types/peer-profile.ts +25 -0
  412. package/src/types/peer.ts +62 -0
  413. package/src/types/plugin-config.ts +31 -0
  414. package/src/types/protocol.ts +162 -0
  415. package/src/types/provider.ts +40 -0
  416. package/src/types/rating.ts +23 -0
  417. package/src/types/report.ts +30 -0
  418. package/src/types/seller.ts +38 -0
  419. package/src/types/staking.ts +23 -0
  420. package/src/utils/debug.ts +30 -0
  421. package/src/utils/hex.ts +14 -0
  422. package/tests/balance-manager.test.ts +156 -0
  423. package/tests/bootstrap.test.ts +108 -0
  424. package/tests/buyer-payment-manager.test.ts +358 -0
  425. package/tests/connection-auth.test.ts +87 -0
  426. package/tests/default-router.test.ts +148 -0
  427. package/tests/evm-keypair.test.ts +173 -0
  428. package/tests/identity.test.ts +133 -0
  429. package/tests/message-protocol.test.ts +212 -0
  430. package/tests/metadata-codec.test.ts +165 -0
  431. package/tests/metadata-validator.test.ts +261 -0
  432. package/tests/metering-storage.test.ts +244 -0
  433. package/tests/payment-codec.test.ts +95 -0
  434. package/tests/payment-mux.test.ts +191 -0
  435. package/tests/peer-selector.test.ts +184 -0
  436. package/tests/provider-detection.test.ts +107 -0
  437. package/tests/proxy-mux-security.test.ts +38 -0
  438. package/tests/receipt.test.ts +215 -0
  439. package/tests/reputation-integration.test.ts +195 -0
  440. package/tests/request-codec.test.ts +144 -0
  441. package/tests/token-counter.test.ts +122 -0
  442. package/tsconfig.json +9 -0
  443. package/vitest.config.ts +7 -0
package/README.md ADDED
@@ -0,0 +1,411 @@
1
+ # @antseed/node
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@antseed/node.svg)](https://www.npmjs.com/package/@antseed/node)
4
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg)](https://nodejs.org/)
5
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.3+-blue.svg)](https://www.typescriptlang.org/)
6
+
7
+ Core protocol SDK for AntSeed -- a peer-to-peer AI services network. Sellers expose AI capacity, buyers discover sellers via DHT and send requests over encrypted P2P connections.
8
+
9
+ ## Installation
10
+
11
+ ```bash
12
+ npm install @antseed/node
13
+ ```
14
+
15
+ ## Quick Start
16
+
17
+ ### Seller Mode
18
+
19
+ A seller node announces its capacity on the DHT and serves inference requests from buyers.
20
+
21
+ ```ts
22
+ import { AntseedNode } from '@antseed/node';
23
+ import type { Provider, SerializedHttpRequest, SerializedHttpResponse } from '@antseed/node';
24
+
25
+ // Implement the Provider interface (or use an existing plugin)
26
+ const myProvider: Provider = {
27
+ name: 'my-llm',
28
+ models: ['my-model-v1'],
29
+ pricing: {
30
+ defaults: {
31
+ inputUsdPerMillion: 10,
32
+ outputUsdPerMillion: 10,
33
+ },
34
+ },
35
+ maxConcurrency: 10,
36
+ async handleRequest(req: SerializedHttpRequest): Promise<SerializedHttpResponse> {
37
+ // Forward the request to your LLM backend and return the response
38
+ const result = await callMyBackend(req);
39
+ return {
40
+ requestId: req.requestId,
41
+ statusCode: 200,
42
+ headers: { 'content-type': 'application/json' },
43
+ body: new TextEncoder().encode(JSON.stringify(result)),
44
+ };
45
+ },
46
+ getCapacity() {
47
+ return { current: 0, max: 10 };
48
+ },
49
+ };
50
+
51
+ const node = new AntseedNode({ role: 'seller' });
52
+ node.registerProvider(myProvider);
53
+ await node.start();
54
+
55
+ console.log('Seller peer ID:', node.peerId);
56
+ // Node is now discoverable on the DHT and accepting P2P connections
57
+ ```
58
+
59
+ ### Buyer Mode
60
+
61
+ A buyer node discovers sellers via DHT, connects to them, and sends inference requests.
62
+
63
+ ```ts
64
+ import { AntseedNode } from '@antseed/node';
65
+ import { randomUUID } from 'node:crypto';
66
+
67
+ const node = new AntseedNode({ role: 'buyer' });
68
+ await node.start();
69
+
70
+ // Discover sellers on the network
71
+ const peers = await node.discoverPeers();
72
+
73
+ if (peers.length > 0) {
74
+ const seller = peers[0];
75
+
76
+ const response = await node.sendRequest(seller, {
77
+ requestId: randomUUID(),
78
+ method: 'POST',
79
+ path: '/v1/messages',
80
+ headers: { 'content-type': 'application/json' },
81
+ body: new TextEncoder().encode(JSON.stringify({
82
+ model: 'claude-sonnet-4-5-20250929',
83
+ max_tokens: 256,
84
+ messages: [{ role: 'user', content: 'Hello' }],
85
+ })),
86
+ });
87
+
88
+ console.log('Response status:', response.statusCode);
89
+ }
90
+ ```
91
+
92
+ ## Node Configuration
93
+
94
+ ```ts
95
+ interface NodeConfig {
96
+ role: 'seller' | 'buyer';
97
+ dataDir?: string; // Default: ~/.antseed
98
+ dhtPort?: number; // Default: 6881 for seller, 0 (OS-assigned) for buyer
99
+ signalingPort?: number; // Default: 6882 for seller
100
+ bootstrapNodes?: Array<{ host: string; port: number }>;
101
+ payments?: {
102
+ enabled?: boolean;
103
+ paymentMethod?: 'crypto';
104
+ platformFeeRate?: number;
105
+ settlementIdleMs?: number;
106
+ defaultEscrowAmountUSDC?: string;
107
+ sellerWalletAddress?: string;
108
+ paymentConfig?: PaymentConfig | null;
109
+ };
110
+ }
111
+ ```
112
+
113
+ | Option | Default | Description |
114
+ |---|---|---|
115
+ | `role` | (required) | `'seller'` to serve requests, `'buyer'` to consume them |
116
+ | `dataDir` | `~/.antseed` | Directory for identity keys, metering DB, and config |
117
+ | `dhtPort` | `6881` / `0` | UDP port for DHT. Seller defaults to 6881, buyer uses OS-assigned |
118
+ | `signalingPort` | `6882` | TCP port for P2P signaling and incoming connections (seller only) |
119
+ | `bootstrapNodes` | Official nodes | Custom DHT bootstrap nodes for testing or private networks |
120
+ | `payments` | disabled | Optional seller-side payment channel + settlement lifecycle wiring |
121
+
122
+ ## On-Chain Settlement Flow
123
+
124
+ When `payments.enabled=true` in seller mode:
125
+
126
+ 1. A per-buyer payment session is created via `BuyerPaymentManager`.
127
+ 2. Escrow is funded on-chain at session start.
128
+ 3. Usage receipts are generated during request handling.
129
+ 4. On idle/session finalization, `calculateSettlement` computes cost from receipts and settles on-chain via:
130
+ - `BaseEscrowClient.settle(sessionId, sellerAmount, platformAmount)`
131
+ 5. Any unused escrow is refunded to the buyer by contract logic in the same settlement transaction.
132
+
133
+ Minimal crypto config:
134
+
135
+ ```ts
136
+ const node = new AntseedNode({
137
+ role: 'seller',
138
+ payments: {
139
+ enabled: true,
140
+ paymentMethod: 'crypto',
141
+ platformFeeRate: 0.05,
142
+ defaultEscrowAmountUSDC: '1',
143
+ sellerWalletAddress: '0xSeller...',
144
+ paymentConfig: {
145
+ crypto: {
146
+ chainId: 'base',
147
+ rpcUrl: process.env.RPC_URL!,
148
+ escrowContractAddress: process.env.ESCROW_ADDRESS!,
149
+ usdcContractAddress: process.env.USDC_ADDRESS!,
150
+ autoFundEscrow: true,
151
+ },
152
+ },
153
+ },
154
+ });
155
+ ```
156
+
157
+ Smart contract source and deployment notes: `node/contracts/README.md`.
158
+
159
+ ## Key Exports
160
+
161
+ ```ts
162
+ // Main class
163
+ import { AntseedNode, type NodeConfig } from '@antseed/node';
164
+
165
+ // Interfaces
166
+ import type { Provider } from '@antseed/node';
167
+ import type { Router } from '@antseed/node';
168
+ import type {
169
+ AntseedPlugin,
170
+ AntseedProviderPlugin,
171
+ AntseedRouterPlugin,
172
+ ConfigField,
173
+ } from '@antseed/node';
174
+
175
+ // Identity & P2P
176
+ import { loadOrCreateIdentity, type Identity } from '@antseed/node';
177
+ import { NatTraversal, type NatMapping, type NatTraversalResult } from '@antseed/node';
178
+
179
+ // Discovery
180
+ import { DHTNode, DEFAULT_DHT_CONFIG } from '@antseed/node';
181
+ import { OFFICIAL_BOOTSTRAP_NODES, mergeBootstrapNodes, toBootstrapConfig } from '@antseed/node';
182
+ import { MetadataServer, type MetadataServerConfig } from '@antseed/node';
183
+ import type { PeerMetadata, ProviderAnnouncement } from '@antseed/node';
184
+
185
+ // Metering & Payments
186
+ import { MeteringStorage } from '@antseed/node';
187
+ import { BalanceManager } from '@antseed/node';
188
+ import { BuyerPaymentManager, calculateSettlement } from '@antseed/node/payments';
189
+ import { BaseEscrowClient } from '@antseed/node';
190
+
191
+ // Routing & Proxy
192
+ import { ProxyMux } from '@antseed/node';
193
+ import { DefaultRouter, type DefaultRouterConfig } from '@antseed/node';
194
+ import { resolveProvider } from '@antseed/node';
195
+ // Plugin system
196
+ import { loadPluginModule, loadAllPlugins } from '@antseed/node';
197
+ import type { ConfigField } from '@antseed/node';
198
+ ```
199
+
200
+ Submodule imports are also available:
201
+
202
+ ```ts
203
+ import { DHTNode } from '@antseed/node/discovery';
204
+ import { MeteringStorage } from '@antseed/node/metering';
205
+ import { BalanceManager } from '@antseed/node/payments';
206
+ ```
207
+
208
+ ## Provider Interface
209
+
210
+ Implement `Provider` to expose any LLM backend as a seller on the network.
211
+
212
+ ```ts
213
+ interface Provider {
214
+ /** Unique name for this provider (e.g., 'anthropic', 'openai') */
215
+ name: string;
216
+
217
+ /** Model IDs this provider supports */
218
+ models: string[];
219
+
220
+ /** Pricing in USD per 1M tokens (defaults + optional per-model overrides) */
221
+ pricing: {
222
+ defaults: { inputUsdPerMillion: number; outputUsdPerMillion: number };
223
+ models?: Record<string, { inputUsdPerMillion: number; outputUsdPerMillion: number }>;
224
+ };
225
+
226
+ /** Maximum concurrent requests this provider can handle */
227
+ maxConcurrency: number;
228
+
229
+ /** Handle an incoming inference request and return the response */
230
+ handleRequest(req: SerializedHttpRequest): Promise<SerializedHttpResponse>;
231
+
232
+ /** Return current and maximum concurrent request counts */
233
+ getCapacity(): { current: number; max: number };
234
+
235
+ /** Optional startup hook (credential validation, warm-up, etc.) */
236
+ init?(): Promise<void>;
237
+
238
+ /** Optional capabilities beyond plain inference */
239
+ capabilities?: ProviderCapability[];
240
+
241
+ /** Optional long-running task endpoint backing `/v1/task` */
242
+ handleTask?(task: TaskRequest): AsyncIterable<TaskEvent>;
243
+
244
+ /** Optional one-shot skill endpoint backing `/v1/skill` */
245
+ handleSkill?(skill: SkillRequest): Promise<SkillResponse>;
246
+ }
247
+ ```
248
+
249
+ ## Router Interface
250
+
251
+ Implement `Router` to control how a buyer selects which seller to route each request to.
252
+
253
+ ```ts
254
+ interface Router {
255
+ /** Pick the best peer for a given request from the available peers. Return null to reject. */
256
+ selectPeer(req: SerializedHttpRequest, peers: PeerInfo[]): PeerInfo | null;
257
+
258
+ /** Called after each request completes so the router can update internal state. */
259
+ onResult(peer: PeerInfo, result: {
260
+ success: boolean;
261
+ latencyMs: number;
262
+ tokens: number;
263
+ }): void;
264
+ }
265
+ ```
266
+
267
+ If no router is set, the SDK uses a built-in `DefaultRouter` that selects the cheapest peer above a minimum reputation threshold.
268
+
269
+ ## Building a Custom Provider Plugin
270
+
271
+ A provider plugin wraps a `Provider` so it can be installed and configured through the CLI.
272
+
273
+ ```ts
274
+ import type { AntseedProviderPlugin, Provider, SerializedHttpRequest, SerializedHttpResponse } from '@antseed/node';
275
+
276
+ class MyProvider implements Provider {
277
+ readonly name = 'my-provider';
278
+ readonly models: string[];
279
+ readonly pricing: Provider['pricing'];
280
+ readonly maxConcurrency: number;
281
+ private _active = 0;
282
+
283
+ constructor(apiKey: string, models: string[], inputUsdPerMillion: number, outputUsdPerMillion: number, maxConcurrency: number) {
284
+ this.models = models;
285
+ this.pricing = {
286
+ defaults: {
287
+ inputUsdPerMillion,
288
+ outputUsdPerMillion,
289
+ },
290
+ };
291
+ this.maxConcurrency = maxConcurrency;
292
+ }
293
+
294
+ async handleRequest(req: SerializedHttpRequest): Promise<SerializedHttpResponse> {
295
+ this._active++;
296
+ try {
297
+ // Forward req to your upstream LLM and return the response
298
+ const upstream = await fetch('https://my-llm.example.com/v1/chat', {
299
+ method: req.method,
300
+ headers: req.headers,
301
+ body: req.body,
302
+ });
303
+ return {
304
+ requestId: req.requestId,
305
+ statusCode: upstream.status,
306
+ headers: Object.fromEntries(upstream.headers.entries()),
307
+ body: new Uint8Array(await upstream.arrayBuffer()),
308
+ };
309
+ } finally {
310
+ this._active--;
311
+ }
312
+ }
313
+
314
+ getCapacity() {
315
+ return { current: this._active, max: this.maxConcurrency };
316
+ }
317
+ }
318
+
319
+ const plugin: AntseedProviderPlugin = {
320
+ name: 'my-provider',
321
+ displayName: 'My Provider',
322
+ version: '1.0.0',
323
+ type: 'provider',
324
+ description: 'Sells My LLM capacity on the Antseed Network',
325
+ configSchema: [
326
+ { key: 'MY_API_KEY', label: 'API Key', type: 'secret', required: true, description: 'API key for My LLM' },
327
+ { key: 'MY_MODELS', label: 'Models', type: 'string[]', required: false, description: 'Comma-separated model list' },
328
+ { key: 'MY_INPUT_USD_PER_MILLION', label: 'Input Price', type: 'number', required: false, description: 'Input price in USD per 1M tokens' },
329
+ { key: 'MY_OUTPUT_USD_PER_MILLION', label: 'Output Price', type: 'number', required: false, description: 'Output price in USD per 1M tokens' },
330
+ ],
331
+ createProvider(config: Record<string, string>) {
332
+ const apiKey = config['MY_API_KEY'] ?? '';
333
+ const models = (config['MY_MODELS'] ?? 'default-model').split(',').map(s => s.trim());
334
+ const input = parseFloat(config['MY_INPUT_USD_PER_MILLION'] ?? '10');
335
+ const output = parseFloat(config['MY_OUTPUT_USD_PER_MILLION'] ?? String(input));
336
+ return new MyProvider(apiKey, models, input, output, 10);
337
+ },
338
+ };
339
+
340
+ export default plugin;
341
+ ```
342
+
343
+ ## Building a Custom Router Plugin
344
+
345
+ A router plugin wraps a `Router` for CLI-based installation and configuration.
346
+
347
+ ```ts
348
+ import type { AntseedRouterPlugin, Router, PeerInfo, SerializedHttpRequest } from '@antseed/node';
349
+
350
+ class CheapestRouter implements Router {
351
+ private readonly _maxInputUsdPerMillion: number;
352
+
353
+ constructor(maxInputUsdPerMillion: number) {
354
+ this._maxInputUsdPerMillion = maxInputUsdPerMillion;
355
+ }
356
+
357
+ selectPeer(_req: SerializedHttpRequest, peers: PeerInfo[]): PeerInfo | null {
358
+ const eligible = peers
359
+ .filter(p => (p.defaultInputUsdPerMillion ?? Infinity) <= this._maxInputUsdPerMillion)
360
+ .sort((a, b) => (a.defaultInputUsdPerMillion ?? 0) - (b.defaultInputUsdPerMillion ?? 0));
361
+ return eligible[0] ?? null;
362
+ }
363
+
364
+ onResult(_peer: PeerInfo, _result: { success: boolean; latencyMs: number; tokens: number }): void {
365
+ // Track metrics, update reputation, etc.
366
+ }
367
+ }
368
+
369
+ const plugin: AntseedRouterPlugin = {
370
+ name: 'cheapest',
371
+ displayName: 'Cheapest Router',
372
+ version: '1.0.0',
373
+ type: 'router',
374
+ description: 'Always routes to the cheapest available peer',
375
+ configSchema: [
376
+ { key: 'MAX_INPUT_USD_PER_MILLION', label: 'Max Input Price', type: 'number', required: false, description: 'Maximum input price in USD per 1M tokens' },
377
+ ],
378
+ createRouter(config: Record<string, string>) {
379
+ const maxInput = parseFloat(config['MAX_INPUT_USD_PER_MILLION'] ?? 'Infinity');
380
+ return new CheapestRouter(maxInput);
381
+ },
382
+ };
383
+
384
+ export default plugin;
385
+ ```
386
+
387
+ ## Plugin Ecosystem
388
+
389
+ The Antseed plugin system uses a simple contract:
390
+
391
+ 1. **Provider plugins** (`AntseedProviderPlugin`) export a default object with `type: 'provider'` and a `createProvider(config)` factory.
392
+ 2. **Router plugins** (`AntseedRouterPlugin`) export a default object with `type: 'router'` and a `createRouter(config)` factory.
393
+ 3. Both plugin types declare their configuration via `configSchema`, an array of `ConfigField` objects:
394
+
395
+ ```ts
396
+ interface ConfigField {
397
+ key: string; // Environment variable name
398
+ label: string; // Human-readable label
399
+ type: 'string' | 'number' | 'boolean' | 'secret' | 'string[]';
400
+ required?: boolean; // Whether the key must be set
401
+ default?: unknown; // Default value
402
+ description?: string; // Description shown in CLI
403
+ }
404
+ ```
405
+
406
+ The CLI reads these keys from environment variables and passes them as a `Record<string, string>` to the factory function. Plugins are installed with `antseed plugin add <package-name>`.
407
+
408
+ ## Links
409
+
410
+ - [npm](https://www.npmjs.com/package/@antseed/node)
411
+ - [GitHub](https://github.com/AntSeed/node)