@antseed/node 0.2.106 → 0.2.107

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 (216) hide show
  1. package/dist/billing/index.d.ts +2 -0
  2. package/dist/billing/index.d.ts.map +1 -0
  3. package/dist/billing/index.js +2 -0
  4. package/dist/billing/index.js.map +1 -0
  5. package/dist/billing/unit.d.ts +3 -0
  6. package/dist/billing/unit.d.ts.map +1 -0
  7. package/dist/billing/unit.js +3 -0
  8. package/dist/billing/unit.js.map +1 -0
  9. package/dist/buyer-request-handler.d.ts +1 -54
  10. package/dist/buyer-request-handler.d.ts.map +1 -1
  11. package/dist/buyer-request-handler.js +2 -379
  12. package/dist/buyer-request-handler.js.map +1 -1
  13. package/dist/discovery/announcer.d.ts +7 -1
  14. package/dist/discovery/announcer.d.ts.map +1 -1
  15. package/dist/discovery/announcer.js +84 -33
  16. package/dist/discovery/announcer.js.map +1 -1
  17. package/dist/discovery/http-metadata-resolver.d.ts +4 -0
  18. package/dist/discovery/http-metadata-resolver.d.ts.map +1 -1
  19. package/dist/discovery/http-metadata-resolver.js +42 -2
  20. package/dist/discovery/http-metadata-resolver.js.map +1 -1
  21. package/dist/discovery/index.d.ts +1 -1
  22. package/dist/discovery/index.d.ts.map +1 -1
  23. package/dist/discovery/index.js +1 -1
  24. package/dist/discovery/index.js.map +1 -1
  25. package/dist/discovery/metadata-codec.d.ts +4 -4
  26. package/dist/discovery/metadata-codec.d.ts.map +1 -1
  27. package/dist/discovery/metadata-codec.js +339 -23
  28. package/dist/discovery/metadata-codec.js.map +1 -1
  29. package/dist/discovery/metadata-validator.d.ts +7 -3
  30. package/dist/discovery/metadata-validator.d.ts.map +1 -1
  31. package/dist/discovery/metadata-validator.js +139 -8
  32. package/dist/discovery/metadata-validator.js.map +1 -1
  33. package/dist/discovery/peer-lookup.d.ts +1 -0
  34. package/dist/discovery/peer-lookup.d.ts.map +1 -1
  35. package/dist/discovery/peer-lookup.js +23 -5
  36. package/dist/discovery/peer-lookup.js.map +1 -1
  37. package/dist/discovery/peer-metadata.d.ts +2 -90
  38. package/dist/discovery/peer-metadata.d.ts.map +1 -1
  39. package/dist/discovery/peer-metadata.js +3 -11
  40. package/dist/discovery/peer-metadata.js.map +1 -1
  41. package/dist/discovery/seller-address-resolver.d.ts +1 -49
  42. package/dist/discovery/seller-address-resolver.d.ts.map +1 -1
  43. package/dist/discovery/seller-address-resolver.js +2 -114
  44. package/dist/discovery/seller-address-resolver.js.map +1 -1
  45. package/dist/errors.d.ts +43 -0
  46. package/dist/errors.d.ts.map +1 -0
  47. package/dist/errors.js +73 -0
  48. package/dist/errors.js.map +1 -0
  49. package/dist/health/model-health-checker.d.ts +6 -5
  50. package/dist/health/model-health-checker.d.ts.map +1 -1
  51. package/dist/health/model-health-checker.js +22 -10
  52. package/dist/health/model-health-checker.js.map +1 -1
  53. package/dist/index.d.ts +3 -1
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +3 -1
  56. package/dist/index.js.map +1 -1
  57. package/dist/interfaces/seller-provider.d.ts +6 -0
  58. package/dist/interfaces/seller-provider.d.ts.map +1 -1
  59. package/dist/node.d.ts.map +1 -1
  60. package/dist/node.js +28 -0
  61. package/dist/node.js.map +1 -1
  62. package/dist/p2p/connection-auth.d.ts +3 -8
  63. package/dist/p2p/connection-auth.d.ts.map +1 -1
  64. package/dist/p2p/connection-auth.js +4 -6
  65. package/dist/p2p/connection-auth.js.map +1 -1
  66. package/dist/p2p/connection-manager.d.ts +3 -1
  67. package/dist/p2p/connection-manager.d.ts.map +1 -1
  68. package/dist/p2p/connection-manager.js.map +1 -1
  69. package/dist/p2p/identity.d.ts +1 -21
  70. package/dist/p2p/identity.d.ts.map +1 -1
  71. package/dist/p2p/identity.js +3 -62
  72. package/dist/p2p/identity.js.map +1 -1
  73. package/dist/p2p/message-protocol.d.ts +1 -49
  74. package/dist/p2p/message-protocol.d.ts.map +1 -1
  75. package/dist/p2p/message-protocol.js +2 -125
  76. package/dist/p2p/message-protocol.js.map +1 -1
  77. package/dist/p2p/payment-codec.d.ts +1 -21
  78. package/dist/p2p/payment-codec.d.ts.map +1 -1
  79. package/dist/p2p/payment-codec.js +2 -220
  80. package/dist/p2p/payment-codec.js.map +1 -1
  81. package/dist/p2p/payment-mux.d.ts +1 -51
  82. package/dist/p2p/payment-mux.d.ts.map +1 -1
  83. package/dist/p2p/payment-mux.js +2 -159
  84. package/dist/p2p/payment-mux.js.map +1 -1
  85. package/dist/payments/buyer-free-usage-manager.d.ts +1 -43
  86. package/dist/payments/buyer-free-usage-manager.d.ts.map +1 -1
  87. package/dist/payments/buyer-free-usage-manager.js +2 -298
  88. package/dist/payments/buyer-free-usage-manager.js.map +1 -1
  89. package/dist/payments/buyer-payment-manager.d.ts +1 -277
  90. package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
  91. package/dist/payments/buyer-payment-manager.js +2 -1039
  92. package/dist/payments/buyer-payment-manager.js.map +1 -1
  93. package/dist/payments/buyer-payment-negotiator.d.ts +1 -130
  94. package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -1
  95. package/dist/payments/buyer-payment-negotiator.js +2 -950
  96. package/dist/payments/buyer-payment-negotiator.js.map +1 -1
  97. package/dist/payments/chain-config.d.ts.map +1 -1
  98. package/dist/payments/chain-config.js +13 -2
  99. package/dist/payments/chain-config.js.map +1 -1
  100. package/dist/payments/channel-session-state.d.ts +1 -13
  101. package/dist/payments/channel-session-state.d.ts.map +1 -1
  102. package/dist/payments/channel-session-state.js +2 -25
  103. package/dist/payments/channel-session-state.js.map +1 -1
  104. package/dist/payments/channel-store.d.ts +2 -51
  105. package/dist/payments/channel-store.d.ts.map +1 -1
  106. package/dist/payments/channel-store.js +3 -14
  107. package/dist/payments/channel-store.js.map +1 -1
  108. package/dist/payments/channel-usage-accounting.d.ts +1 -17
  109. package/dist/payments/channel-usage-accounting.d.ts.map +1 -1
  110. package/dist/payments/channel-usage-accounting.js +2 -65
  111. package/dist/payments/channel-usage-accounting.js.map +1 -1
  112. package/dist/payments/evm/base-evm-client.d.ts +1 -26
  113. package/dist/payments/evm/base-evm-client.d.ts.map +1 -1
  114. package/dist/payments/evm/base-evm-client.js +2 -115
  115. package/dist/payments/evm/base-evm-client.js.map +1 -1
  116. package/dist/payments/evm/channels-client.d.ts +1 -85
  117. package/dist/payments/evm/channels-client.d.ts.map +1 -1
  118. package/dist/payments/evm/channels-client.js +2 -193
  119. package/dist/payments/evm/channels-client.js.map +1 -1
  120. package/dist/payments/evm/deposits-client.d.ts +1 -29
  121. package/dist/payments/evm/deposits-client.d.ts.map +1 -1
  122. package/dist/payments/evm/deposits-client.js +2 -67
  123. package/dist/payments/evm/deposits-client.js.map +1 -1
  124. package/dist/payments/evm/signatures.d.ts +1 -203
  125. package/dist/payments/evm/signatures.d.ts.map +1 -1
  126. package/dist/payments/evm/signatures.js +2 -236
  127. package/dist/payments/evm/signatures.js.map +1 -1
  128. package/dist/payments/evm/subpool-client.d.ts +32 -0
  129. package/dist/payments/evm/subpool-client.d.ts.map +1 -0
  130. package/dist/payments/evm/subpool-client.js +158 -0
  131. package/dist/payments/evm/subpool-client.js.map +1 -0
  132. package/dist/payments/index.d.ts +1 -1
  133. package/dist/payments/index.d.ts.map +1 -1
  134. package/dist/payments/index.js +1 -1
  135. package/dist/payments/index.js.map +1 -1
  136. package/dist/payments/pricing.d.ts +1 -26
  137. package/dist/payments/pricing.d.ts.map +1 -1
  138. package/dist/payments/pricing.js +2 -36
  139. package/dist/payments/pricing.js.map +1 -1
  140. package/dist/payments/usdc-utils.d.ts +1 -8
  141. package/dist/payments/usdc-utils.d.ts.map +1 -1
  142. package/dist/payments/usdc-utils.js +2 -16
  143. package/dist/payments/usdc-utils.js.map +1 -1
  144. package/dist/proxy/proxy-mux.d.ts +1 -69
  145. package/dist/proxy/proxy-mux.d.ts.map +1 -1
  146. package/dist/proxy/proxy-mux.js +2 -346
  147. package/dist/proxy/proxy-mux.js.map +1 -1
  148. package/dist/proxy/request-codec.d.ts +1 -41
  149. package/dist/proxy/request-codec.d.ts.map +1 -1
  150. package/dist/proxy/request-codec.js +2 -280
  151. package/dist/proxy/request-codec.js.map +1 -1
  152. package/dist/seller-request-handler.d.ts +10 -3
  153. package/dist/seller-request-handler.d.ts.map +1 -1
  154. package/dist/seller-request-handler.js +112 -17
  155. package/dist/seller-request-handler.js.map +1 -1
  156. package/dist/types/billing.d.ts +2 -0
  157. package/dist/types/billing.d.ts.map +1 -0
  158. package/dist/types/billing.js +2 -0
  159. package/dist/types/billing.js.map +1 -0
  160. package/dist/types/capability.d.ts +1 -25
  161. package/dist/types/capability.d.ts.map +1 -1
  162. package/dist/types/capability.js +2 -1
  163. package/dist/types/capability.js.map +1 -1
  164. package/dist/types/connection.d.ts +1 -26
  165. package/dist/types/connection.d.ts.map +1 -1
  166. package/dist/types/connection.js +2 -10
  167. package/dist/types/connection.js.map +1 -1
  168. package/dist/types/http.d.ts +1 -39
  169. package/dist/types/http.d.ts.map +1 -1
  170. package/dist/types/http.js +2 -16
  171. package/dist/types/http.js.map +1 -1
  172. package/dist/types/index.d.ts +1 -0
  173. package/dist/types/index.d.ts.map +1 -1
  174. package/dist/types/index.js +1 -0
  175. package/dist/types/index.js.map +1 -1
  176. package/dist/types/peer.d.ts +9 -31
  177. package/dist/types/peer.d.ts.map +1 -1
  178. package/dist/types/peer.js +2 -14
  179. package/dist/types/peer.js.map +1 -1
  180. package/dist/types/protocol.d.ts +1 -306
  181. package/dist/types/protocol.d.ts.map +1 -1
  182. package/dist/types/protocol.js +2 -81
  183. package/dist/types/protocol.js.map +1 -1
  184. package/dist/types/service-api.d.ts +1 -5
  185. package/dist/types/service-api.d.ts.map +1 -1
  186. package/dist/types/service-api.js +2 -12
  187. package/dist/types/service-api.js.map +1 -1
  188. package/dist/utils/debug.d.ts +1 -5
  189. package/dist/utils/debug.d.ts.map +1 -1
  190. package/dist/utils/debug.js +2 -52
  191. package/dist/utils/debug.js.map +1 -1
  192. package/dist/utils/hex.d.ts +1 -2
  193. package/dist/utils/hex.d.ts.map +1 -1
  194. package/dist/utils/hex.js +2 -14
  195. package/dist/utils/hex.js.map +1 -1
  196. package/dist/utils/json-codec.d.ts +1 -9
  197. package/dist/utils/json-codec.d.ts.map +1 -1
  198. package/dist/utils/json-codec.js +2 -51
  199. package/dist/utils/json-codec.js.map +1 -1
  200. package/dist/utils/response-usage.d.ts +1 -9
  201. package/dist/utils/response-usage.d.ts.map +1 -1
  202. package/dist/utils/response-usage.js +2 -39
  203. package/dist/utils/response-usage.js.map +1 -1
  204. package/dist/verification/codec.d.ts +1 -3
  205. package/dist/verification/codec.d.ts.map +1 -1
  206. package/dist/verification/codec.js +2 -37
  207. package/dist/verification/codec.js.map +1 -1
  208. package/dist/verification/response-auth.d.ts +1 -30
  209. package/dist/verification/response-auth.d.ts.map +1 -1
  210. package/dist/verification/response-auth.js +2 -110
  211. package/dist/verification/response-auth.js.map +1 -1
  212. package/dist/verification/verification-mux.d.ts +1 -19
  213. package/dist/verification/verification-mux.d.ts.map +1 -1
  214. package/dist/verification/verification-mux.js +2 -99
  215. package/dist/verification/verification-mux.js.map +1 -1
  216. package/package.json +4 -2
@@ -0,0 +1,2 @@
1
+ export { captureUnitBillingContext, computeFinalUnitBilling, evaluateUnitBilling, extractUnitResponseUsage, isFreeUnitBillingModel, usdToMicroUsdc, unitUsageFromReport, validateUnitBillingModelV1, validateUnitBillingUsage, validateUnitBillingUsageReportV1, type CapturedUnitBillingContext, type FinalUnitBillingResult, } from "./unit.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/billing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,gCAAgC,EAChC,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,GAC5B,MAAM,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { captureUnitBillingContext, computeFinalUnitBilling, evaluateUnitBilling, extractUnitResponseUsage, isFreeUnitBillingModel, usdToMicroUsdc, unitUsageFromReport, validateUnitBillingModelV1, validateUnitBillingUsage, validateUnitBillingUsageReportV1, } from "./unit.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/billing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,gCAAgC,GAGjC,MAAM,WAAW,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from '@antseed/protocol/billing';
2
+ export * from '@antseed/buyer-core/unit-billing';
3
+ //# sourceMappingURL=unit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit.d.ts","sourceRoot":"","sources":["../../src/billing/unit.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from '@antseed/protocol/billing';
2
+ export * from '@antseed/buyer-core/unit-billing';
3
+ //# sourceMappingURL=unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit.js","sourceRoot":"","sources":["../../src/billing/unit.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC"}
@@ -1,55 +1,2 @@
1
- import { type SerializedHttpRequest, type SerializedHttpResponse, type SerializedHttpResponseChunk } from "./types/http.js";
2
- import type { PeerInfo, PeerId } from "./types/peer.js";
3
- import type { PeerConnection } from "./p2p/connection-manager.js";
4
- import type { ProxyMux } from "./proxy/proxy-mux.js";
5
- import { PaymentMux } from "./p2p/payment-mux.js";
6
- import type { BuyerPaymentNegotiator } from "./payments/buyer-payment-negotiator.js";
7
- import type { VerificationMux } from "./verification/verification-mux.js";
8
- import type { VerificationStorage } from "./verification/storage.js";
9
- import type { VerificationSampler } from "./verification/samples.js";
10
- import type { BuyerFreeUsageManager } from "./payments/buyer-free-usage-manager.js";
11
- export interface RequestStreamResponseMetadata {
12
- streaming: boolean;
13
- }
14
- export interface RequestStreamCallbacks {
15
- onResponseStart?: (response: SerializedHttpResponse, metadata: RequestStreamResponseMetadata) => void;
16
- onResponseChunk?: (chunk: SerializedHttpResponseChunk) => void;
17
- }
18
- export interface RequestExecutionOptions {
19
- signal?: AbortSignal;
20
- /** Skip payment/free-usage machinery for internal control-plane requests. */
21
- controlPlane?: boolean;
22
- }
23
- export interface BuyerRequestHandlerConfig {
24
- requestTimeoutMs?: number;
25
- maxStreamBufferBytes?: number;
26
- maxStreamDurationMs?: number;
27
- responseAuthTimeoutMs?: number;
28
- }
29
- export interface BuyerRequestHandlerDeps {
30
- localPeerId: PeerId;
31
- negotiator: BuyerPaymentNegotiator | null;
32
- freeUsageManager?: BuyerFreeUsageManager | null;
33
- verificationStorage: VerificationStorage | null;
34
- verificationSampler: VerificationSampler | null;
35
- getConnection: (peer: PeerInfo) => Promise<PeerConnection>;
36
- getMux: (peerId: PeerId, conn: PeerConnection) => ProxyMux;
37
- getVerificationMux: (peerId: PeerId, conn: PeerConnection) => VerificationMux;
38
- registerPaymentMux: (peerId: PeerId, mux: PaymentMux) => void;
39
- }
40
- /**
41
- * Handles buyer-side outbound request execution: connection setup, streaming,
42
- * timeouts, abort signals, 402 payment negotiation, and cost tracking.
43
- *
44
- * Extracted from AntseedNode._sendRequestInternal to separate buyer request
45
- * orchestration from core node lifecycle.
46
- */
47
- export declare class BuyerRequestHandler {
48
- private readonly _config;
49
- private readonly _deps;
50
- constructor(config: BuyerRequestHandlerConfig, deps: BuyerRequestHandlerDeps);
51
- sendRequest(peer: PeerInfo, req: SerializedHttpRequest, callbacks?: RequestStreamCallbacks, options?: RequestExecutionOptions): Promise<SerializedHttpResponse>;
52
- private _prepareDirectFreeUsageOpen;
53
- private _recordResponseAuth;
54
- }
1
+ export * from '@antseed/buyer-core/buyer-request-handler';
55
2
  //# sourceMappingURL=buyer-request-handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buyer-request-handler.d.ts","sourceRoot":"","sources":["../src/buyer-request-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EACjC,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAErF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AAKpF,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,eAAe,CAAC,EAAE,CAChB,QAAQ,EAAE,sBAAsB,EAChC,QAAQ,EAAE,6BAA6B,KACpC,IAAI,CAAC;IACV,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;CAChE;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAKD,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC1C,gBAAgB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAChD,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,QAAQ,CAAC;IAC3D,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,eAAe,CAAC;IAC9E,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;CAC/D;AAED;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;gBAEpC,MAAM,EAAE,yBAAyB,EAAE,IAAI,EAAE,uBAAuB;IAKtE,WAAW,CACf,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,qBAAqB,EAC1B,SAAS,CAAC,EAAE,sBAAsB,EAClC,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,sBAAsB,CAAC;IAuPlC,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,mBAAmB;CAyD5B"}
1
+ {"version":3,"file":"buyer-request-handler.d.ts","sourceRoot":"","sources":["../src/buyer-request-handler.ts"],"names":[],"mappings":"AACA,cAAc,2CAA2C,CAAC"}
@@ -1,380 +1,3 @@
1
- import { ANTSEED_STREAMING_RESPONSE_HEADER, ANTSEED_SPENDING_AUTH_HEADER, } from "./types/http.js";
2
- import { PaymentMux } from "./p2p/payment-mux.js";
3
- import { ConnectionState } from "./types/connection.js";
4
- import { debugLog, debugWarn } from "./utils/debug.js";
5
- import { verifyResponseAuth } from "./verification/response-auth.js";
6
- import { tryParseJsonObject } from "./utils/json-codec.js";
7
- import { CONNECTION_CAPABILITY_RESPONSE_AUTH_V1 } from "./types/protocol.js";
8
- const DEFAULT_REQUEST_TIMEOUT_MS = 5 * 60_000;
9
- const DEFAULT_RESPONSE_AUTH_GRACE_MS = 30_000;
10
- /**
11
- * Handles buyer-side outbound request execution: connection setup, streaming,
12
- * timeouts, abort signals, 402 payment negotiation, and cost tracking.
13
- *
14
- * Extracted from AntseedNode._sendRequestInternal to separate buyer request
15
- * orchestration from core node lifecycle.
16
- */
17
- export class BuyerRequestHandler {
18
- _config;
19
- _deps;
20
- constructor(config, deps) {
21
- this._config = config;
22
- this._deps = deps;
23
- }
24
- async sendRequest(peer, req, callbacks, options) {
25
- if (!req.requestId || typeof req.requestId !== "string") {
26
- throw new Error("requestId must be a non-empty string");
27
- }
28
- const opName = callbacks ? "sendRequestStream" : "sendRequest";
29
- debugLog(`[BuyerRequest] ${opName} ${req.method} ${req.path} → peer ${peer.peerId.slice(0, 12)}... (reqId=${req.requestId.slice(0, 8)})`);
30
- const conn = await this._deps.getConnection(peer);
31
- debugLog(`[BuyerRequest] Connection to ${peer.peerId.slice(0, 12)}... state=${conn.state}`);
32
- const mux = this._deps.getMux(peer.peerId, conn);
33
- const verificationMux = this._deps.getVerificationMux(peer.peerId, conn);
34
- const negotiator = options?.controlPlane ? null : this._deps.negotiator;
35
- if (negotiator) {
36
- this._deps.registerPaymentMux(peer.peerId, negotiator.getOrCreatePaymentMux(peer.peerId, conn));
37
- }
38
- // Extract and strip x-antseed-spending-auth header if present (external auth compatibility)
39
- const externalSpendingAuth = req.headers[ANTSEED_SPENDING_AUTH_HEADER] ?? null;
40
- if (externalSpendingAuth) {
41
- const { [ANTSEED_SPENDING_AUTH_HEADER]: _, ...cleanHeaders } = req.headers;
42
- req = { ...req, headers: cleanHeaders };
43
- }
44
- if (externalSpendingAuth && negotiator) {
45
- debugLog(`[BuyerRequest] Applying external spending auth for ${peer.peerId.slice(0, 12)}...`);
46
- await negotiator.applyExternalSpendingAuth(peer, conn, externalSpendingAuth);
47
- }
48
- // Track which service the buyer requested so auth validation uses buyer's own pricing.
49
- const requestedService = options?.controlPlane ? undefined : extractServiceFromBody(req.body);
50
- const isFreeService = requestedService ? isPeerServiceFree(peer, requestedService) : false;
51
- if (negotiator && requestedService) {
52
- if (isFreeService) {
53
- negotiator.trackFreeUsageRequestService(req.requestId, requestedService);
54
- try {
55
- await negotiator.prepareFreeUsageOpen(peer, conn);
56
- }
57
- catch (err) {
58
- debugWarn(`[BuyerRequest] Failed to prepare free usage channel for ${peer.peerId.slice(0, 12)}...: ${err instanceof Error ? err.message : err}`);
59
- }
60
- }
61
- else {
62
- negotiator.bpm.trackRequestService(req.requestId, requestedService);
63
- }
64
- }
65
- else if (requestedService && isFreeService && this._deps.freeUsageManager) {
66
- this._deps.freeUsageManager.trackRequestService(req.requestId, requestedService);
67
- try {
68
- this._prepareDirectFreeUsageOpen(peer, conn);
69
- }
70
- catch (err) {
71
- debugWarn(`[BuyerRequest] Failed to prepare free usage channel for ${peer.peerId.slice(0, 12)}...: ${err instanceof Error ? err.message : err}`);
72
- }
73
- }
74
- let startTime = Date.now();
75
- const executeRequest = () => new Promise((resolve, reject) => {
76
- const timeoutMs = this._config.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
77
- const maxStreamBufferBytes = Math.max(1, this._config.maxStreamBufferBytes ?? 16 * 1024 * 1024);
78
- const maxStreamDurationMs = Math.max(1, this._config.maxStreamDurationMs ?? 5 * 60_000);
79
- const streamInitialResponseTimeoutMs = callbacks ? Math.max(timeoutMs, 90_000) : timeoutMs;
80
- const streamIdleTimeoutMs = Math.max(timeoutMs, 60_000);
81
- let settled = false;
82
- let streamStarted = false;
83
- let streamStartedAtMs = 0;
84
- let streamBufferedBytes = 0;
85
- let streamStartResponse = null;
86
- const streamChunks = [];
87
- let activeTimeout = null;
88
- let activeTimeoutMs = streamInitialResponseTimeoutMs;
89
- const abortSignal = options?.signal;
90
- let abortListenerAttached = false;
91
- let connectionStateListenerAttached = false;
92
- const hasConnectionStateEvents = typeof conn.on === "function"
93
- && typeof conn.off === "function";
94
- const cleanupAbortListener = () => {
95
- if (abortSignal && abortListenerAttached) {
96
- abortSignal.removeEventListener("abort", onAbort);
97
- abortListenerAttached = false;
98
- }
99
- };
100
- const cleanupConnectionListener = () => {
101
- if (!connectionStateListenerAttached)
102
- return;
103
- conn.off("stateChange", onConnectionStateChange);
104
- connectionStateListenerAttached = false;
105
- };
106
- const onConnectionStateChange = (state) => {
107
- if (settled)
108
- return;
109
- if (state !== ConnectionState.Closed && state !== ConnectionState.Failed) {
110
- return;
111
- }
112
- settled = true;
113
- if (activeTimeout)
114
- clearTimeout(activeTimeout);
115
- cleanupAbortListener();
116
- cleanupConnectionListener();
117
- mux.cancelProxyRequest(req.requestId);
118
- reject(new Error(`Connection to ${peer.peerId} ${state.toLowerCase()} during request ${req.requestId}`));
119
- };
120
- const onAbort = () => {
121
- if (settled)
122
- return;
123
- settled = true;
124
- if (activeTimeout)
125
- clearTimeout(activeTimeout);
126
- cleanupAbortListener();
127
- cleanupConnectionListener();
128
- debugWarn(`[BuyerRequest] Request ${req.requestId.slice(0, 8)} aborted by caller`);
129
- mux.cancelProxyRequest(req.requestId);
130
- reject(new Error(`Request ${req.requestId} aborted`));
131
- };
132
- if (abortSignal) {
133
- if (abortSignal.aborted) {
134
- onAbort();
135
- return;
136
- }
137
- abortSignal.addEventListener("abort", onAbort, { once: true });
138
- abortListenerAttached = true;
139
- }
140
- if (hasConnectionStateEvents) {
141
- conn.on("stateChange", onConnectionStateChange);
142
- connectionStateListenerAttached = true;
143
- }
144
- const resetTimeout = (ms) => {
145
- if (activeTimeout)
146
- clearTimeout(activeTimeout);
147
- activeTimeoutMs = ms;
148
- activeTimeout = setTimeout(() => {
149
- if (settled)
150
- return;
151
- settled = true;
152
- cleanupAbortListener();
153
- cleanupConnectionListener();
154
- debugWarn(`[BuyerRequest] Request ${req.requestId.slice(0, 8)} timed out after ${Date.now() - startTime}ms `
155
- + `(timeout=${activeTimeoutMs}ms, stream=${callbacks ? "true" : "false"}, streamStarted=${streamStarted ? "true" : "false"}, buffered=${streamBufferedBytes}b)`);
156
- mux.cancelProxyRequest(req.requestId);
157
- reject(new Error(`Request ${req.requestId} timed out`));
158
- }, ms);
159
- };
160
- resetTimeout(streamInitialResponseTimeoutMs);
161
- const finish = (response) => {
162
- if (settled)
163
- return;
164
- settled = true;
165
- if (activeTimeout)
166
- clearTimeout(activeTimeout);
167
- cleanupAbortListener();
168
- cleanupConnectionListener();
169
- const cleaned = stripStreamingHeader(response);
170
- debugLog(`[BuyerRequest] Response for ${req.requestId.slice(0, 8)}: status=${cleaned.statusCode} (${Date.now() - startTime}ms, ${cleaned.body.length}b)`);
171
- resolve(cleaned);
172
- };
173
- const fail = (error) => {
174
- if (settled)
175
- return;
176
- settled = true;
177
- if (activeTimeout)
178
- clearTimeout(activeTimeout);
179
- cleanupAbortListener();
180
- cleanupConnectionListener();
181
- reject(error);
182
- };
183
- mux.sendProxyRequest(req, (response, metadata) => {
184
- if (settled)
185
- return;
186
- if (metadata.streamingStart) {
187
- streamStarted = true;
188
- streamStartedAtMs = Date.now();
189
- streamBufferedBytes = 0;
190
- streamStartResponse = stripStreamingHeader(response);
191
- debugLog(`[BuyerRequest] Stream started for ${req.requestId.slice(0, 8)}; idle-timeout=${streamIdleTimeoutMs}ms`);
192
- resetTimeout(streamIdleTimeoutMs);
193
- callbacks?.onResponseStart?.(streamStartResponse, { streaming: true });
194
- return;
195
- }
196
- callbacks?.onResponseStart?.(stripStreamingHeader(response), { streaming: false });
197
- finish(response);
198
- }, (chunk) => {
199
- if (settled)
200
- return;
201
- if (!streamStarted)
202
- return;
203
- resetTimeout(streamIdleTimeoutMs);
204
- if (Date.now() - streamStartedAtMs > maxStreamDurationMs) {
205
- mux.cancelProxyRequest(req.requestId);
206
- fail(new Error(`Stream ${req.requestId} exceeded max duration (${maxStreamDurationMs}ms)`));
207
- return;
208
- }
209
- callbacks?.onResponseChunk?.(chunk);
210
- if (chunk.data.length > 0) {
211
- if (callbacks?.onResponseChunk) {
212
- streamBufferedBytes += chunk.data.length;
213
- streamChunks.push(chunk.data);
214
- }
215
- else {
216
- const nextBufferedBytes = streamBufferedBytes + chunk.data.length;
217
- if (nextBufferedBytes > maxStreamBufferBytes) {
218
- mux.cancelProxyRequest(req.requestId);
219
- fail(new Error(`Stream ${req.requestId} exceeded max buffered size (${maxStreamBufferBytes} bytes)`));
220
- return;
221
- }
222
- streamBufferedBytes = nextBufferedBytes;
223
- streamChunks.push(chunk.data);
224
- }
225
- }
226
- if (!chunk.done)
227
- return;
228
- if (!streamStartResponse) {
229
- fail(new Error(`Stream ${req.requestId} ended before response start`));
230
- return;
231
- }
232
- finish({
233
- ...streamStartResponse,
234
- body: concatChunks(streamChunks),
235
- });
236
- });
237
- });
238
- const response = await executeRequest();
239
- if (response.statusCode === 402 && negotiator && !externalSpendingAuth) {
240
- const result = await negotiator.handle402(response, peer, conn, req);
241
- if (result.action === 'return')
242
- return result.response;
243
- startTime = Date.now();
244
- const retriedResponse = await executeRequest();
245
- if (!isFreeService) {
246
- negotiator.estimateCostFromResponse(peer, retriedResponse, requestedService, req.requestId);
247
- }
248
- this._recordResponseAuth(peer, req, retriedResponse, requestedService, verificationMux);
249
- return retriedResponse;
250
- }
251
- if (negotiator && !isFreeService) {
252
- negotiator.estimateCostFromResponse(peer, response, requestedService, req.requestId);
253
- }
254
- this._recordResponseAuth(peer, req, response, requestedService, verificationMux);
255
- return response;
256
- }
257
- _prepareDirectFreeUsageOpen(peer, conn) {
258
- const freeUsage = this._deps.freeUsageManager;
259
- if (!freeUsage)
260
- return;
261
- const pmux = new PaymentMux(conn);
262
- pmux.onFreeUsageAck((payload) => {
263
- freeUsage.handleAck(peer.peerId, payload);
264
- });
265
- pmux.onNeedFreeUsageAuth((payload) => {
266
- const p = freeUsage.handleNeedAuth(peer.peerId, payload, pmux);
267
- p.catch((err) => {
268
- debugWarn(`[BuyerRequest] Failed to handle free usage auth request from ${peer.peerId.slice(0, 12)}...: ${err instanceof Error ? err.message : err}`);
269
- });
270
- });
271
- this._deps.registerPaymentMux(peer.peerId, pmux);
272
- void freeUsage.prepareOpen(peer, pmux)
273
- .then(() => freeUsage.waitForOpenAck(peer.peerId))
274
- .catch((err) => {
275
- debugWarn(`[BuyerRequest] Free usage open ack unavailable for ${peer.peerId.slice(0, 12)}...: ${err instanceof Error ? err.message : err}`);
276
- });
277
- }
278
- _recordResponseAuth(peer, request, response, requestedService, verificationMux) {
279
- if (!shouldExpectResponseAuth(peer, response, requestedService)) {
280
- return;
281
- }
282
- const storage = this._deps.verificationStorage;
283
- const advertisedService = requestedService ?? 'unknown';
284
- const expectedChannelId = this._deps.negotiator?.bpm?.getActiveSession(peer.peerId)?.sessionId ?? null;
285
- const responseAuthPromise = verificationMux.waitForResponseAuth(request.requestId, this._config.responseAuthTimeoutMs ?? DEFAULT_RESPONSE_AUTH_GRACE_MS);
286
- void responseAuthPromise
287
- .then((payload) => {
288
- const verification = verifyResponseAuth(payload, {
289
- request,
290
- response,
291
- buyerPeerId: this._deps.localPeerId,
292
- sellerPeerId: peer.peerId,
293
- advertisedService,
294
- channelId: expectedChannelId,
295
- });
296
- if (!verification.valid) {
297
- debugWarn(`[BuyerRequest] Invalid ResponseAuth for ${request.requestId.slice(0, 8)} from ${peer.peerId.slice(0, 12)}...: ${verification.reason ?? 'unknown'}`);
298
- }
299
- storage?.insertResponseAuth({
300
- ...payload,
301
- receivedAt: Date.now(),
302
- verified: verification.valid,
303
- verificationError: verification.reason ?? null,
304
- });
305
- void this._deps.verificationSampler?.maybeStoreResponseAuthSample({
306
- request,
307
- response,
308
- responseAuth: payload,
309
- verified: verification.valid,
310
- verificationError: verification.reason ?? null,
311
- }).catch((err) => {
312
- debugWarn(`[BuyerRequest] Failed to store ResponseAuth sample for ${request.requestId.slice(0, 8)}: ${err instanceof Error ? err.message : err}`);
313
- });
314
- })
315
- .catch((err) => {
316
- debugWarn(`[BuyerRequest] Missing ResponseAuth for ${request.requestId.slice(0, 8)} from ${peer.peerId.slice(0, 12)}...: ${err instanceof Error ? err.message : err}`);
317
- });
318
- }
319
- }
320
- /** Extract the service/model name from a JSON request body, or undefined if not found. */
321
- function extractServiceFromBody(body) {
322
- const parsed = tryParseJsonObject(body);
323
- const service = parsed?.service ?? parsed?.model;
324
- if (typeof service === 'string' && service.length > 0)
325
- return service;
326
- return undefined;
327
- }
328
- function stripStreamingHeader(response) {
329
- if (response.headers[ANTSEED_STREAMING_RESPONSE_HEADER] !== "1") {
330
- return response;
331
- }
332
- const headers = { ...response.headers };
333
- delete headers[ANTSEED_STREAMING_RESPONSE_HEADER];
334
- return { ...response, headers };
335
- }
336
- function shouldExpectResponseAuth(peer, response, requestedService) {
337
- if (!requestedService)
338
- return false;
339
- if (response.statusCode === 402)
340
- return false;
341
- return peer.capabilities?.includes(CONNECTION_CAPABILITY_RESPONSE_AUTH_V1) === true;
342
- }
343
- function isPeerServiceFree(peer, service) {
344
- const servicePricing = findPeerServicePricing(peer, service);
345
- if (!servicePricing)
346
- return false;
347
- return (servicePricing.inputUsdPerMillion ?? 0) === 0
348
- && (servicePricing.outputUsdPerMillion ?? 0) === 0
349
- && (servicePricing.cachedInputUsdPerMillion ?? 0) === 0;
350
- }
351
- function findPeerServicePricing(peer, service) {
352
- for (const providerPricing of Object.values(peer.providerPricing ?? {})) {
353
- const servicePricing = providerPricing.services?.[service];
354
- if (servicePricing)
355
- return servicePricing;
356
- }
357
- if (peer.defaultInputUsdPerMillion != null || peer.defaultOutputUsdPerMillion != null) {
358
- return {
359
- inputUsdPerMillion: peer.defaultInputUsdPerMillion ?? 0,
360
- outputUsdPerMillion: peer.defaultOutputUsdPerMillion ?? 0,
361
- cachedInputUsdPerMillion: peer.defaultCachedInputUsdPerMillion,
362
- };
363
- }
364
- return null;
365
- }
366
- function concatChunks(chunks) {
367
- if (chunks.length === 0)
368
- return new Uint8Array(0);
369
- if (chunks.length === 1)
370
- return chunks[0];
371
- const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
372
- const output = new Uint8Array(totalLength);
373
- let offset = 0;
374
- for (const chunk of chunks) {
375
- output.set(chunk, offset);
376
- offset += chunk.length;
377
- }
378
- return output;
379
- }
1
+ // Moved to @antseed/buyer-core; re-exported for compatibility.
2
+ export * from '@antseed/buyer-core/buyer-request-handler';
380
3
  //# sourceMappingURL=buyer-request-handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buyer-request-handler.js","sourceRoot":"","sources":["../src/buyer-request-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buyer-request-handler.js","sourceRoot":"","sources":["../src/buyer-request-handler.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,cAAc,2CAA2C,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import type { Identity } from "../p2p/identity.js";
2
2
  import type { DHTNode } from "./dht-node.js";
3
3
  import type { PeerOffering } from "../types/capability.js";
4
- import type { PeerMetadata, PeerVerifications } from "./peer-metadata.js";
4
+ import type { PeerMetadata, PeerVerifications, ServiceCapabilities } from "./peer-metadata.js";
5
5
  import type { ServiceApiProtocol } from "../types/service-api.js";
6
+ import type { ServiceUnitBillingModelsV1 } from "../types/billing.js";
6
7
  import type { StakingClient } from "../payments/evm/staking-client.js";
7
8
  import type { ChannelsClient } from "../payments/evm/channels-client.js";
8
9
  import type { DHTHealthMonitor } from "./dht-health.js";
@@ -23,6 +24,8 @@ export interface AnnouncerConfig {
23
24
  services: string[];
24
25
  serviceCategories?: Record<string, string[]>;
25
26
  serviceApiProtocols?: Record<string, ServiceApiProtocol[]>;
27
+ serviceUnitBillingModels?: ServiceUnitBillingModelsV1;
28
+ serviceCapabilities?: Record<string, ServiceCapabilities>;
26
29
  maxConcurrency: number;
27
30
  /** Runtime availability predicate. Unavailable providers are omitted. */
28
31
  isAvailable?: () => boolean;
@@ -98,6 +101,7 @@ export declare class PeerAnnouncer {
98
101
  private _normalizedSellerContract;
99
102
  private _normalizedVerifications;
100
103
  private _buildSignedMetadata;
104
+ private _signAndValidateMetadata;
101
105
  /**
102
106
  * Announce the topics that let buyers discover this peer.
103
107
  *
@@ -120,5 +124,7 @@ export declare class PeerAnnouncer {
120
124
  private _tryAnnounceTopic;
121
125
  private _normalizeServiceCategories;
122
126
  private _normalizeServiceApiProtocols;
127
+ private _normalizeServiceUnitBillingModels;
128
+ private _normalizeServiceCapabilities;
123
129
  }
124
130
  //# sourceMappingURL=announcer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"announcer.d.ts","sourceRoot":"","sources":["../../src/discovery/announcer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"announcer.d.ts","sourceRoot":"","sources":["../../src/discovery/announcer.ts"],"names":[],"mappings":"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"}