@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.
Files changed (255) hide show
  1. package/README.md +85 -11
  2. package/dist/buyer-request-handler.d.ts +41 -0
  3. package/dist/buyer-request-handler.d.ts.map +1 -0
  4. package/dist/buyer-request-handler.js +254 -0
  5. package/dist/buyer-request-handler.js.map +1 -0
  6. package/dist/discovery/announcer.d.ts +5 -2
  7. package/dist/discovery/announcer.d.ts.map +1 -1
  8. package/dist/discovery/announcer.js +11 -14
  9. package/dist/discovery/announcer.js.map +1 -1
  10. package/dist/discovery/index.d.ts +0 -2
  11. package/dist/discovery/index.d.ts.map +1 -1
  12. package/dist/discovery/index.js +0 -2
  13. package/dist/discovery/index.js.map +1 -1
  14. package/dist/discovery/metadata-codec.d.ts +2 -2
  15. package/dist/discovery/metadata-codec.d.ts.map +1 -1
  16. package/dist/discovery/metadata-codec.js +47 -72
  17. package/dist/discovery/metadata-codec.js.map +1 -1
  18. package/dist/discovery/metadata-validator.js +6 -6
  19. package/dist/discovery/metadata-validator.js.map +1 -1
  20. package/dist/discovery/peer-lookup.d.ts.map +1 -1
  21. package/dist/discovery/peer-lookup.js +1 -2
  22. package/dist/discovery/peer-lookup.js.map +1 -1
  23. package/dist/discovery/peer-metadata.d.ts +3 -5
  24. package/dist/discovery/peer-metadata.d.ts.map +1 -1
  25. package/dist/discovery/peer-metadata.js +1 -1
  26. package/dist/discovery/reputation-verifier.d.ts +2 -22
  27. package/dist/discovery/reputation-verifier.d.ts.map +1 -1
  28. package/dist/discovery/reputation-verifier.js +2 -24
  29. package/dist/discovery/reputation-verifier.js.map +1 -1
  30. package/dist/discovery/stats-verifier.d.ts +27 -0
  31. package/dist/discovery/stats-verifier.d.ts.map +1 -0
  32. package/dist/discovery/stats-verifier.js +38 -0
  33. package/dist/discovery/stats-verifier.js.map +1 -0
  34. package/dist/index.d.ts +17 -5
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +11 -3
  37. package/dist/index.js.map +1 -1
  38. package/dist/metering/index.d.ts +1 -0
  39. package/dist/metering/index.d.ts.map +1 -1
  40. package/dist/metering/index.js +1 -0
  41. package/dist/metering/index.js.map +1 -1
  42. package/dist/metering/receipt-generator.d.ts +4 -4
  43. package/dist/metering/receipt-generator.d.ts.map +1 -1
  44. package/dist/metering/receipt-verifier.d.ts +6 -6
  45. package/dist/metering/receipt-verifier.d.ts.map +1 -1
  46. package/dist/metering/receipt-verifier.js +1 -1
  47. package/dist/metering/seller-session-tracker.d.ts +91 -0
  48. package/dist/metering/seller-session-tracker.d.ts.map +1 -0
  49. package/dist/metering/seller-session-tracker.js +261 -0
  50. package/dist/metering/seller-session-tracker.js.map +1 -0
  51. package/dist/metering/storage.d.ts +11 -5
  52. package/dist/metering/storage.d.ts.map +1 -1
  53. package/dist/metering/storage.js +28 -80
  54. package/dist/metering/storage.js.map +1 -1
  55. package/dist/node.d.ts +83 -104
  56. package/dist/node.d.ts.map +1 -1
  57. package/dist/node.js +313 -1026
  58. package/dist/node.js.map +1 -1
  59. package/dist/p2p/connection-auth.d.ts +2 -1
  60. package/dist/p2p/connection-auth.d.ts.map +1 -1
  61. package/dist/p2p/connection-auth.js +6 -6
  62. package/dist/p2p/connection-auth.js.map +1 -1
  63. package/dist/p2p/connection-manager.d.ts +3 -2
  64. package/dist/p2p/connection-manager.d.ts.map +1 -1
  65. package/dist/p2p/connection-manager.js +12 -6
  66. package/dist/p2p/connection-manager.js.map +1 -1
  67. package/dist/p2p/identity.d.ts +44 -13
  68. package/dist/p2p/identity.d.ts.map +1 -1
  69. package/dist/p2p/identity.js +103 -49
  70. package/dist/p2p/identity.js.map +1 -1
  71. package/dist/p2p/index.d.ts +1 -3
  72. package/dist/p2p/index.d.ts.map +1 -1
  73. package/dist/p2p/index.js +1 -3
  74. package/dist/p2p/index.js.map +1 -1
  75. package/dist/p2p/payment-codec.d.ts +9 -19
  76. package/dist/p2p/payment-codec.d.ts.map +1 -1
  77. package/dist/p2p/payment-codec.js +41 -89
  78. package/dist/p2p/payment-codec.js.map +1 -1
  79. package/dist/p2p/payment-mux.d.ts +14 -29
  80. package/dist/p2p/payment-mux.d.ts.map +1 -1
  81. package/dist/p2p/payment-mux.js +41 -79
  82. package/dist/p2p/payment-mux.js.map +1 -1
  83. package/dist/payments/balance-manager.d.ts +2 -2
  84. package/dist/payments/balance-manager.d.ts.map +1 -1
  85. package/dist/payments/balance-manager.js +5 -5
  86. package/dist/payments/balance-manager.js.map +1 -1
  87. package/dist/payments/buyer-payment-manager.d.ts +157 -83
  88. package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
  89. package/dist/payments/buyer-payment-manager.js +573 -204
  90. package/dist/payments/buyer-payment-manager.js.map +1 -1
  91. package/dist/payments/buyer-payment-negotiator.d.ts +84 -0
  92. package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -0
  93. package/dist/payments/buyer-payment-negotiator.js +624 -0
  94. package/dist/payments/buyer-payment-negotiator.js.map +1 -0
  95. package/dist/payments/chain-config.d.ts +44 -0
  96. package/dist/payments/chain-config.d.ts.map +1 -0
  97. package/dist/payments/chain-config.js +70 -0
  98. package/dist/payments/chain-config.js.map +1 -0
  99. package/dist/payments/channel-session-state.d.ts +13 -0
  100. package/dist/payments/channel-session-state.d.ts.map +1 -0
  101. package/dist/payments/channel-session-state.js +25 -0
  102. package/dist/payments/channel-session-state.js.map +1 -0
  103. package/dist/payments/channel-store.d.ts +87 -0
  104. package/dist/payments/channel-store.d.ts.map +1 -0
  105. package/dist/payments/channel-store.js +276 -0
  106. package/dist/payments/channel-store.js.map +1 -0
  107. package/dist/payments/evm/ants-token-client.d.ts +16 -0
  108. package/dist/payments/evm/ants-token-client.d.ts.map +1 -0
  109. package/dist/payments/evm/ants-token-client.js +65 -0
  110. package/dist/payments/evm/ants-token-client.js.map +1 -0
  111. package/dist/payments/evm/base-evm-client.d.ts +22 -0
  112. package/dist/payments/evm/base-evm-client.d.ts.map +1 -0
  113. package/dist/payments/evm/base-evm-client.js +71 -0
  114. package/dist/payments/evm/base-evm-client.js.map +1 -0
  115. package/dist/payments/evm/channels-client.d.ts +51 -0
  116. package/dist/payments/evm/channels-client.d.ts.map +1 -0
  117. package/dist/payments/evm/channels-client.js +101 -0
  118. package/dist/payments/evm/channels-client.js.map +1 -0
  119. package/dist/payments/evm/deposits-client.d.ts +30 -0
  120. package/dist/payments/evm/deposits-client.d.ts.map +1 -0
  121. package/dist/payments/evm/deposits-client.js +78 -0
  122. package/dist/payments/evm/deposits-client.js.map +1 -0
  123. package/dist/payments/evm/emissions-client.d.ts +22 -0
  124. package/dist/payments/evm/emissions-client.d.ts.map +1 -0
  125. package/dist/payments/evm/emissions-client.js +65 -0
  126. package/dist/payments/evm/emissions-client.js.map +1 -0
  127. package/dist/payments/evm/escrow-client.d.ts +57 -36
  128. package/dist/payments/evm/escrow-client.d.ts.map +1 -1
  129. package/dist/payments/evm/escrow-client.js +200 -93
  130. package/dist/payments/evm/escrow-client.js.map +1 -1
  131. package/dist/payments/evm/identity-client.d.ts +21 -0
  132. package/dist/payments/evm/identity-client.d.ts.map +1 -0
  133. package/dist/payments/evm/identity-client.js +68 -0
  134. package/dist/payments/evm/identity-client.js.map +1 -0
  135. package/dist/payments/evm/keypair.d.ts +3 -14
  136. package/dist/payments/evm/keypair.d.ts.map +1 -1
  137. package/dist/payments/evm/keypair.js +4 -20
  138. package/dist/payments/evm/keypair.js.map +1 -1
  139. package/dist/payments/evm/sessions-client.d.ts +30 -0
  140. package/dist/payments/evm/sessions-client.d.ts.map +1 -0
  141. package/dist/payments/evm/sessions-client.js +61 -0
  142. package/dist/payments/evm/sessions-client.js.map +1 -0
  143. package/dist/payments/evm/signatures.d.ts +54 -10
  144. package/dist/payments/evm/signatures.d.ts.map +1 -1
  145. package/dist/payments/evm/signatures.js +80 -54
  146. package/dist/payments/evm/signatures.js.map +1 -1
  147. package/dist/payments/evm/staking-client.d.ts +24 -0
  148. package/dist/payments/evm/staking-client.d.ts.map +1 -0
  149. package/dist/payments/evm/staking-client.js +54 -0
  150. package/dist/payments/evm/staking-client.js.map +1 -0
  151. package/dist/payments/evm/stats-client.d.ts +20 -0
  152. package/dist/payments/evm/stats-client.d.ts.map +1 -0
  153. package/dist/payments/evm/stats-client.js +25 -0
  154. package/dist/payments/evm/stats-client.js.map +1 -0
  155. package/dist/payments/evm/subpool-client.d.ts +30 -0
  156. package/dist/payments/evm/subpool-client.d.ts.map +1 -0
  157. package/dist/payments/evm/subpool-client.js +158 -0
  158. package/dist/payments/evm/subpool-client.js.map +1 -0
  159. package/dist/payments/index.d.ts +29 -9
  160. package/dist/payments/index.d.ts.map +1 -1
  161. package/dist/payments/index.js +27 -9
  162. package/dist/payments/index.js.map +1 -1
  163. package/dist/payments/pricing.d.ts +25 -0
  164. package/dist/payments/pricing.d.ts.map +1 -0
  165. package/dist/payments/pricing.js +33 -0
  166. package/dist/payments/pricing.js.map +1 -0
  167. package/dist/payments/readiness.d.ts +13 -0
  168. package/dist/payments/readiness.d.ts.map +1 -0
  169. package/dist/payments/readiness.js +57 -0
  170. package/dist/payments/readiness.js.map +1 -0
  171. package/dist/payments/seller-payment-manager.d.ts +101 -36
  172. package/dist/payments/seller-payment-manager.d.ts.map +1 -1
  173. package/dist/payments/seller-payment-manager.js +612 -120
  174. package/dist/payments/seller-payment-manager.js.map +1 -1
  175. package/dist/payments/session-store.d.ts +68 -0
  176. package/dist/payments/session-store.d.ts.map +1 -0
  177. package/dist/payments/session-store.js +272 -0
  178. package/dist/payments/session-store.js.map +1 -0
  179. package/dist/payments/types.d.ts +5 -3
  180. package/dist/payments/types.d.ts.map +1 -1
  181. package/dist/payments/usdc-utils.d.ts +9 -0
  182. package/dist/payments/usdc-utils.d.ts.map +1 -0
  183. package/dist/payments/usdc-utils.js +17 -0
  184. package/dist/payments/usdc-utils.js.map +1 -0
  185. package/dist/proxy/proxy-mux.d.ts.map +1 -1
  186. package/dist/proxy/proxy-mux.js +3 -2
  187. package/dist/proxy/proxy-mux.js.map +1 -1
  188. package/dist/proxy/request-codec.d.ts.map +1 -1
  189. package/dist/proxy/request-codec.js +3 -0
  190. package/dist/proxy/request-codec.js.map +1 -1
  191. package/dist/reputation/rating-manager.d.ts.map +1 -1
  192. package/dist/reputation/rating-manager.js +2 -4
  193. package/dist/reputation/rating-manager.js.map +1 -1
  194. package/dist/reputation/report-manager.d.ts.map +1 -1
  195. package/dist/reputation/report-manager.js +2 -4
  196. package/dist/reputation/report-manager.js.map +1 -1
  197. package/dist/routing/default-router.d.ts.map +1 -1
  198. package/dist/routing/default-router.js +4 -9
  199. package/dist/routing/default-router.js.map +1 -1
  200. package/dist/seller-request-handler.d.ts +54 -0
  201. package/dist/seller-request-handler.d.ts.map +1 -0
  202. package/dist/seller-request-handler.js +359 -0
  203. package/dist/seller-request-handler.js.map +1 -0
  204. package/dist/storage/migrate.d.ts +13 -0
  205. package/dist/storage/migrate.d.ts.map +1 -0
  206. package/dist/storage/migrate.js +28 -0
  207. package/dist/storage/migrate.js.map +1 -0
  208. package/dist/storage/migrations/channels/001_create_tables.d.ts +3 -0
  209. package/dist/storage/migrations/channels/001_create_tables.d.ts.map +1 -0
  210. package/dist/storage/migrations/channels/001_create_tables.js +45 -0
  211. package/dist/storage/migrations/channels/001_create_tables.js.map +1 -0
  212. package/dist/storage/migrations/channels/002_add_auth_sig_columns.d.ts +3 -0
  213. package/dist/storage/migrations/channels/002_add_auth_sig_columns.d.ts.map +1 -0
  214. package/dist/storage/migrations/channels/002_add_auth_sig_columns.js +19 -0
  215. package/dist/storage/migrations/channels/002_add_auth_sig_columns.js.map +1 -0
  216. package/dist/storage/migrations/channels/index.d.ts +3 -0
  217. package/dist/storage/migrations/channels/index.d.ts.map +1 -0
  218. package/dist/storage/migrations/channels/index.js +4 -0
  219. package/dist/storage/migrations/channels/index.js.map +1 -0
  220. package/dist/storage/migrations/metering/001_create_tables.d.ts +3 -0
  221. package/dist/storage/migrations/metering/001_create_tables.d.ts.map +1 -0
  222. package/dist/storage/migrations/metering/001_create_tables.js +80 -0
  223. package/dist/storage/migrations/metering/001_create_tables.js.map +1 -0
  224. package/dist/storage/migrations/metering/index.d.ts +3 -0
  225. package/dist/storage/migrations/metering/index.d.ts.map +1 -0
  226. package/dist/storage/migrations/metering/index.js +3 -0
  227. package/dist/storage/migrations/metering/index.js.map +1 -0
  228. package/dist/types/capability.d.ts +1 -1
  229. package/dist/types/http.d.ts +2 -0
  230. package/dist/types/http.d.ts.map +1 -1
  231. package/dist/types/http.js +2 -0
  232. package/dist/types/http.js.map +1 -1
  233. package/dist/types/index.d.ts +0 -1
  234. package/dist/types/index.d.ts.map +1 -1
  235. package/dist/types/index.js +0 -1
  236. package/dist/types/index.js.map +1 -1
  237. package/dist/types/metering.d.ts +2 -2
  238. package/dist/types/metering.d.ts.map +1 -1
  239. package/dist/types/peer.d.ts +10 -11
  240. package/dist/types/peer.d.ts.map +1 -1
  241. package/dist/types/peer.js +7 -3
  242. package/dist/types/peer.js.map +1 -1
  243. package/dist/types/protocol.d.ts +32 -97
  244. package/dist/types/protocol.d.ts.map +1 -1
  245. package/dist/types/protocol.js +5 -10
  246. package/dist/types/protocol.js.map +1 -1
  247. package/dist/types/rating.d.ts +1 -1
  248. package/dist/types/rating.d.ts.map +1 -1
  249. package/dist/types/report.d.ts +1 -1
  250. package/dist/types/report.d.ts.map +1 -1
  251. package/dist/utils/response-usage.d.ts +10 -0
  252. package/dist/utils/response-usage.d.ts.map +1 -0
  253. package/dist/utils/response-usage.js +34 -0
  254. package/dist/utils/response-usage.js.map +1 -0
  255. package/package.json +4 -3
@@ -10,15 +10,10 @@ export declare enum MessageType {
10
10
  HttpResponseError = 36,
11
11
  HttpRequestChunk = 37,
12
12
  HttpRequestEnd = 38,
13
- SessionLockAuth = 80,
14
- SessionLockConfirm = 81,
15
- SessionLockReject = 82,
16
- SellerReceipt = 83,
17
- BuyerAck = 84,
18
- SessionEnd = 85,
19
- TopUpRequest = 86,
20
- TopUpAuth = 87,
21
- DisputeNotify = 88,
13
+ SpendingAuth = 80,
14
+ AuthAck = 81,
15
+ PaymentRequired = 86,
16
+ NeedAuth = 88,
22
17
  PeerReport = 96,
23
18
  ReportAck = 97,
24
19
  PeerRating = 112,
@@ -35,103 +30,43 @@ export interface FramedMessage {
35
30
  export declare const FRAME_HEADER_SIZE = 9;
36
31
  export declare const MAX_PAYLOAD_SIZE: number;
37
32
  /**
38
- * Buyer authorizes locking funds for a session.
39
- * Contains the buyer's ECDSA signature over keccak256(sessionId, seller, amount).
33
+ * Buyer authorizes spending via a single EIP-712 SpendingAuth signature.
34
+ * The signature covers channelId, cumulativeAmount, and metadataHash.
40
35
  */
41
- export interface SessionLockAuthPayload {
42
- /** 32-byte session ID as hex string */
43
- sessionId: string;
44
- /** Amount to lock in USDC base units (6 decimals) */
45
- lockedAmount: string;
46
- /** Buyer's ECDSA signature over keccak256(sessionId || seller || amount) as hex */
47
- buyerSig: string;
36
+ export interface SpendingAuthPayload {
37
+ channelId: string;
38
+ cumulativeAmount: string;
39
+ metadataHash: string;
40
+ metadata: string;
41
+ spendingAuthSig: string;
42
+ reserveSalt?: string;
43
+ reserveMaxAmount?: string;
44
+ reserveDeadline?: number;
48
45
  }
49
46
  /**
50
- * Seller confirms the lock was committed on-chain.
47
+ * Seller acknowledges the spending authorization was reserved on-chain.
51
48
  */
52
- export interface SessionLockConfirmPayload {
53
- sessionId: string;
54
- /** Base transaction hash for the commit_lock instruction */
55
- txSignature: string;
49
+ export interface AuthAckPayload {
50
+ channelId: string;
56
51
  }
57
52
  /**
58
- * Seller rejects the lock (insufficient funds, invalid sig, etc).
53
+ * Seller tells buyer what's needed to start a payment session.
54
+ * Sent via PaymentMux alongside the HTTP 402 response.
59
55
  */
60
- export interface SessionLockRejectPayload {
61
- sessionId: string;
62
- reason: string;
56
+ export interface PaymentRequiredPayload {
57
+ minBudgetPerRequest: string;
58
+ suggestedAmount: string;
59
+ requestId: string;
60
+ inputUsdPerMillion?: number;
61
+ outputUsdPerMillion?: number;
63
62
  }
64
63
  /**
65
- * Running-total receipt signed by seller after processing a request.
66
- * Each receipt supersedes the previous one.
64
+ * Seller tells buyer that the current cumulative authorization is insufficient.
67
65
  */
68
- export interface SellerReceiptPayload {
69
- sessionId: string;
70
- /** Cumulative cost of all requests in this session (USDC base units) */
71
- runningTotal: string;
72
- /** Number of requests processed so far */
73
- requestCount: number;
74
- /** SHA-256 hash of the response body (hex) for proof of work */
75
- responseHash: string;
76
- /** Seller's Ed25519 signature over (sessionId || runningTotal || requestCount || responseHash) */
77
- sellerSig: string;
78
- }
79
- /**
80
- * Buyer acknowledges the seller's receipt by counter-signing.
81
- */
82
- export interface BuyerAckPayload {
83
- sessionId: string;
84
- /** Must match seller's runningTotal */
85
- runningTotal: string;
86
- /** Must match seller's requestCount */
87
- requestCount: number;
88
- /** Buyer's Ed25519 signature over (sessionId || runningTotal || requestCount) */
89
- buyerSig: string;
90
- }
91
- /**
92
- * Buyer ends the session with a final score.
93
- */
94
- export interface SessionEndPayload {
95
- sessionId: string;
96
- /** Final running total (must match last ack'd receipt) */
97
- runningTotal: string;
98
- /** Final request count */
99
- requestCount: number;
100
- /** Quality score 0-100 */
101
- score: number;
102
- /** Buyer's ECDSA signature over keccak256(sessionId || runningTotal || score) as hex */
103
- buyerSig: string;
104
- }
105
- /**
106
- * Seller requests additional funds when budget is running low.
107
- */
108
- export interface TopUpRequestPayload {
109
- sessionId: string;
110
- /** Additional USDC amount requested (base units) */
111
- additionalAmount: string;
112
- /** Current running total for context */
113
- currentRunningTotal: string;
114
- /** Current locked amount for context */
115
- currentLockedAmount: string;
116
- }
117
- /**
118
- * Buyer authorizes a top-up.
119
- */
120
- export interface TopUpAuthPayload {
121
- sessionId: string;
122
- /** Additional amount authorized (USDC base units) */
123
- additionalAmount: string;
124
- /** Buyer's ECDSA signature over keccak256(sessionId || seller || additionalAmount) as hex */
125
- buyerSig: string;
126
- }
127
- /**
128
- * Notify counterparty that a dispute has been opened on-chain.
129
- */
130
- export interface DisputeNotifyPayload {
131
- sessionId: string;
132
- /** Reason for the dispute */
133
- reason: string;
134
- /** Base tx hash of the open_dispute instruction */
135
- txSignature: string;
66
+ export interface NeedAuthPayload {
67
+ channelId: string;
68
+ requiredCumulativeAmount: string;
69
+ currentAcceptedCumulative: string;
70
+ deposit: string;
136
71
  }
137
72
  //# sourceMappingURL=protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,aAAa,IAAO;IACpB,YAAY,IAAO;IACnB,IAAI,KAAO;IACX,IAAI,KAAO;IACX,WAAW,KAAO;IAClB,YAAY,KAAO;IACnB,iBAAiB,KAAO;IACxB,eAAe,KAAO;IACtB,iBAAiB,KAAO;IAExB,gBAAgB,KAAO;IACvB,cAAc,KAAS;IAGvB,YAAY,KAAO;IACnB,OAAO,KAAO;IACd,eAAe,KAAO;IACtB,QAAQ,KAAO;IAGf,UAAU,KAAO;IACjB,SAAS,KAAO;IAGhB,UAAU,MAAO;IACjB,WAAW,MAAO;IAClB,cAAc,MAAO;IAErB,UAAU,MAAO;IACjB,KAAK,MAAO;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,UAAU,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,gBAAgB,QAAmB,CAAC;AAIjD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IAExB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB,EAAE,MAAM,CAAC;IACjC,yBAAyB,EAAE,MAAM,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -12,16 +12,11 @@ export var MessageType;
12
12
  // Chunked request upload (buyer→seller body streaming)
13
13
  MessageType[MessageType["HttpRequestChunk"] = 37] = "HttpRequestChunk";
14
14
  MessageType[MessageType["HttpRequestEnd"] = 38] = "HttpRequestEnd";
15
- // --- Bilateral Payment Protocol (0x50-0x5F) ---
16
- MessageType[MessageType["SessionLockAuth"] = 80] = "SessionLockAuth";
17
- MessageType[MessageType["SessionLockConfirm"] = 81] = "SessionLockConfirm";
18
- MessageType[MessageType["SessionLockReject"] = 82] = "SessionLockReject";
19
- MessageType[MessageType["SellerReceipt"] = 83] = "SellerReceipt";
20
- MessageType[MessageType["BuyerAck"] = 84] = "BuyerAck";
21
- MessageType[MessageType["SessionEnd"] = 85] = "SessionEnd";
22
- MessageType[MessageType["TopUpRequest"] = 86] = "TopUpRequest";
23
- MessageType[MessageType["TopUpAuth"] = 87] = "TopUpAuth";
24
- MessageType[MessageType["DisputeNotify"] = 88] = "DisputeNotify";
15
+ // --- Payment Protocol (0x50-0x5F) ---
16
+ MessageType[MessageType["SpendingAuth"] = 80] = "SpendingAuth";
17
+ MessageType[MessageType["AuthAck"] = 81] = "AuthAck";
18
+ MessageType[MessageType["PaymentRequired"] = 86] = "PaymentRequired";
19
+ MessageType[MessageType["NeedAuth"] = 88] = "NeedAuth";
25
20
  // Report message types
26
21
  MessageType[MessageType["PeerReport"] = 96] = "PeerReport";
27
22
  MessageType[MessageType["ReportAck"] = 97] = "ReportAck";
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WAoCX;AApCD,WAAY,WAAW;IACrB,+DAAoB,CAAA;IACpB,6DAAmB,CAAA;IACnB,8CAAW,CAAA;IACX,8CAAW,CAAA;IACX,4DAAkB,CAAA;IAClB,8DAAmB,CAAA;IACnB,wEAAwB,CAAA;IACxB,oEAAsB,CAAA;IACtB,wEAAwB,CAAA;IACxB,uDAAuD;IACvD,sEAAuB,CAAA;IACvB,kEAAuB,CAAA;IAEvB,iDAAiD;IACjD,oEAAsB,CAAA;IACtB,0EAAyB,CAAA;IACzB,wEAAwB,CAAA;IACxB,gEAAoB,CAAA;IACpB,sDAAe,CAAA;IACf,0DAAiB,CAAA;IACjB,8DAAmB,CAAA;IACnB,wDAAgB,CAAA;IAChB,gEAAoB,CAAA;IAEpB,uBAAuB;IACvB,0DAAiB,CAAA;IACjB,wDAAgB,CAAA;IAEhB,uBAAuB;IACvB,2DAAiB,CAAA;IACjB,6DAAkB,CAAA;IAClB,mEAAqB,CAAA;IAErB,2DAAiB,CAAA;IACjB,iDAAY,CAAA;AACd,CAAC,EApCW,WAAW,KAAX,WAAW,QAoCtB;AAQD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/types/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,WA+BX;AA/BD,WAAY,WAAW;IACrB,+DAAoB,CAAA;IACpB,6DAAmB,CAAA;IACnB,8CAAW,CAAA;IACX,8CAAW,CAAA;IACX,4DAAkB,CAAA;IAClB,8DAAmB,CAAA;IACnB,wEAAwB,CAAA;IACxB,oEAAsB,CAAA;IACtB,wEAAwB,CAAA;IACxB,uDAAuD;IACvD,sEAAuB,CAAA;IACvB,kEAAuB,CAAA;IAEvB,uCAAuC;IACvC,8DAAmB,CAAA;IACnB,oDAAc,CAAA;IACd,oEAAsB,CAAA;IACtB,sDAAe,CAAA;IAEf,uBAAuB;IACvB,0DAAiB,CAAA;IACjB,wDAAgB,CAAA;IAEhB,uBAAuB;IACvB,2DAAiB,CAAA;IACjB,6DAAkB,CAAA;IAClB,mEAAqB,CAAA;IAErB,2DAAiB,CAAA;IACjB,iDAAY,CAAA;AACd,CAAC,EA/BW,WAAW,KAAX,WAAW,QA+BtB;AAQD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC"}
@@ -8,7 +8,7 @@ export interface PeerRating {
8
8
  dimensions: Record<RatingDimension, 1 | 2 | 3 | 4 | 5>;
9
9
  comment?: string;
10
10
  timestamp: number;
11
- /** Ed25519 signature (hex) */
11
+ /** secp256k1 signature (hex) */
12
12
  signature: string;
13
13
  }
14
14
  export interface AggregateRating {
@@ -1 +1 @@
1
- {"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../../src/types/rating.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAExF,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB"}
1
+ {"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../../src/types/rating.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAExF,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -14,7 +14,7 @@ export interface PeerReport {
14
14
  sessionId?: string;
15
15
  timestamp: number;
16
16
  status: ReportStatus;
17
- /** Ed25519 signature over report data (hex string) */
17
+ /** secp256k1 signature over report data (hex string) */
18
18
  signature: string;
19
19
  }
20
20
  //# sourceMappingURL=report.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/types/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,cAAc,GACd,SAAS,GACT,iBAAiB,GACjB,OAAO,GACP,eAAe,GACf,OAAO,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/types/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,cAAc,GACd,SAAS,GACT,iBAAiB,GACjB,OAAO,GACP,eAAe,GACf,OAAO,CAAC;AAEZ,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,CAAC;AAEjF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,MAAM,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;IACrB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Parse actual token usage from an LLM provider response body.
3
+ * Handles both JSON and SSE (streaming) responses. Returns zeros
4
+ * if usage data is not found (caller should fall back to estimation).
5
+ */
6
+ export declare function parseResponseUsage(body: Uint8Array): {
7
+ inputTokens: number;
8
+ outputTokens: number;
9
+ };
10
+ //# sourceMappingURL=response-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-usage.d.ts","sourceRoot":"","sources":["../../src/utils/response-usage.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAqBlG"}
@@ -0,0 +1,34 @@
1
+ import { parseJsonObject, extractUsage } from '@antseed/api-adapter';
2
+ /**
3
+ * Parse actual token usage from an LLM provider response body.
4
+ * Handles both JSON and SSE (streaming) responses. Returns zeros
5
+ * if usage data is not found (caller should fall back to estimation).
6
+ */
7
+ export function parseResponseUsage(body) {
8
+ const parsed = parseJsonObject(body);
9
+ if (parsed) {
10
+ return extractUsage(parsed);
11
+ }
12
+ const text = new TextDecoder().decode(body);
13
+ let inputTokens = 0;
14
+ let outputTokens = 0;
15
+ for (const line of text.split('\n')) {
16
+ const trimmed = line.trim();
17
+ if (!trimmed.startsWith('data:'))
18
+ continue;
19
+ const payload = trimmed.slice(5).trim();
20
+ if (!payload || payload === '[DONE]')
21
+ continue;
22
+ try {
23
+ const event = JSON.parse(payload);
24
+ const usage = extractUsage(event);
25
+ if (usage.inputTokens > 0)
26
+ inputTokens = Math.max(inputTokens, usage.inputTokens);
27
+ if (usage.outputTokens > 0)
28
+ outputTokens = Math.max(outputTokens, usage.outputTokens);
29
+ }
30
+ catch { /* skip non-JSON lines */ }
31
+ }
32
+ return { inputTokens, outputTokens };
33
+ }
34
+ //# sourceMappingURL=response-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-usage.js","sourceRoot":"","sources":["../../src/utils/response-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAErE;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,QAAQ;YAAE,SAAS;QAC/C,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;YAC7D,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC;gBAAE,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YAClF,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC;gBAAE,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACxF,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AACvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antseed/node",
3
- "version": "0.2.26",
3
+ "version": "0.2.28",
4
4
  "description": "Antseed Network protocol SDK — P2P inference marketplace",
5
5
  "type": "module",
6
6
  "files": [
@@ -39,18 +39,19 @@
39
39
  }
40
40
  },
41
41
  "dependencies": {
42
- "@noble/ed25519": "^2.1.0",
43
42
  "@silentbot1/nat-api": "^0.4.9",
44
43
  "better-sqlite3": "^12.6.2",
45
44
  "bittorrent-dht": "^11.0.11",
46
45
  "ethers": "~6.16.0",
47
46
  "node-datachannel": "^0.7.0",
48
- "@antseed/api-adapter": "0.1.13"
47
+ "tokenx": "^1.3.0",
48
+ "@antseed/api-adapter": "0.1.15"
49
49
  },
50
50
  "optionalDependencies": {
51
51
  "keytar": "^7.9.0"
52
52
  },
53
53
  "devDependencies": {
54
+ "@openzeppelin/contracts": "^5.6.1",
54
55
  "@types/better-sqlite3": "^7.6.13",
55
56
  "@types/node": "^20.11.0",
56
57
  "typescript": "^5.3.0",