@antseed/node 0.2.105 → 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.
- package/dist/billing/index.d.ts +2 -0
- package/dist/billing/index.d.ts.map +1 -0
- package/dist/billing/index.js +2 -0
- package/dist/billing/index.js.map +1 -0
- package/dist/billing/unit.d.ts +3 -0
- package/dist/billing/unit.d.ts.map +1 -0
- package/dist/billing/unit.js +3 -0
- package/dist/billing/unit.js.map +1 -0
- package/dist/buyer-request-handler.d.ts +1 -54
- package/dist/buyer-request-handler.d.ts.map +1 -1
- package/dist/buyer-request-handler.js +2 -379
- package/dist/buyer-request-handler.js.map +1 -1
- package/dist/discovery/announcer.d.ts +7 -1
- package/dist/discovery/announcer.d.ts.map +1 -1
- package/dist/discovery/announcer.js +84 -33
- package/dist/discovery/announcer.js.map +1 -1
- package/dist/discovery/http-metadata-resolver.d.ts +4 -0
- package/dist/discovery/http-metadata-resolver.d.ts.map +1 -1
- package/dist/discovery/http-metadata-resolver.js +42 -2
- package/dist/discovery/http-metadata-resolver.js.map +1 -1
- package/dist/discovery/index.d.ts +1 -1
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +1 -1
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/metadata-codec.d.ts +4 -4
- package/dist/discovery/metadata-codec.d.ts.map +1 -1
- package/dist/discovery/metadata-codec.js +339 -23
- package/dist/discovery/metadata-codec.js.map +1 -1
- package/dist/discovery/metadata-validator.d.ts +7 -3
- package/dist/discovery/metadata-validator.d.ts.map +1 -1
- package/dist/discovery/metadata-validator.js +139 -8
- package/dist/discovery/metadata-validator.js.map +1 -1
- package/dist/discovery/peer-lookup.d.ts +1 -0
- package/dist/discovery/peer-lookup.d.ts.map +1 -1
- package/dist/discovery/peer-lookup.js +23 -5
- package/dist/discovery/peer-lookup.js.map +1 -1
- package/dist/discovery/peer-metadata.d.ts +2 -90
- package/dist/discovery/peer-metadata.d.ts.map +1 -1
- package/dist/discovery/peer-metadata.js +3 -11
- package/dist/discovery/peer-metadata.js.map +1 -1
- package/dist/discovery/seller-address-resolver.d.ts +1 -49
- package/dist/discovery/seller-address-resolver.d.ts.map +1 -1
- package/dist/discovery/seller-address-resolver.js +2 -114
- package/dist/discovery/seller-address-resolver.js.map +1 -1
- package/dist/errors.d.ts +43 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +73 -0
- package/dist/errors.js.map +1 -0
- package/dist/health/model-health-checker.d.ts +6 -5
- package/dist/health/model-health-checker.d.ts.map +1 -1
- package/dist/health/model-health-checker.js +22 -10
- package/dist/health/model-health-checker.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/seller-provider.d.ts +6 -0
- package/dist/interfaces/seller-provider.d.ts.map +1 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +28 -0
- package/dist/node.js.map +1 -1
- package/dist/p2p/connection-auth.d.ts +3 -8
- package/dist/p2p/connection-auth.d.ts.map +1 -1
- package/dist/p2p/connection-auth.js +4 -6
- package/dist/p2p/connection-auth.js.map +1 -1
- package/dist/p2p/connection-manager.d.ts +3 -1
- package/dist/p2p/connection-manager.d.ts.map +1 -1
- package/dist/p2p/connection-manager.js.map +1 -1
- package/dist/p2p/identity.d.ts +1 -21
- package/dist/p2p/identity.d.ts.map +1 -1
- package/dist/p2p/identity.js +3 -62
- package/dist/p2p/identity.js.map +1 -1
- package/dist/p2p/message-protocol.d.ts +1 -49
- package/dist/p2p/message-protocol.d.ts.map +1 -1
- package/dist/p2p/message-protocol.js +2 -125
- package/dist/p2p/message-protocol.js.map +1 -1
- package/dist/p2p/payment-codec.d.ts +1 -21
- package/dist/p2p/payment-codec.d.ts.map +1 -1
- package/dist/p2p/payment-codec.js +2 -220
- package/dist/p2p/payment-codec.js.map +1 -1
- package/dist/p2p/payment-mux.d.ts +1 -51
- package/dist/p2p/payment-mux.d.ts.map +1 -1
- package/dist/p2p/payment-mux.js +2 -159
- package/dist/p2p/payment-mux.js.map +1 -1
- package/dist/payments/buyer-free-usage-manager.d.ts +1 -43
- package/dist/payments/buyer-free-usage-manager.d.ts.map +1 -1
- package/dist/payments/buyer-free-usage-manager.js +2 -298
- package/dist/payments/buyer-free-usage-manager.js.map +1 -1
- package/dist/payments/buyer-payment-manager.d.ts +1 -277
- package/dist/payments/buyer-payment-manager.d.ts.map +1 -1
- package/dist/payments/buyer-payment-manager.js +2 -1039
- package/dist/payments/buyer-payment-manager.js.map +1 -1
- package/dist/payments/buyer-payment-negotiator.d.ts +1 -130
- package/dist/payments/buyer-payment-negotiator.d.ts.map +1 -1
- package/dist/payments/buyer-payment-negotiator.js +2 -950
- package/dist/payments/buyer-payment-negotiator.js.map +1 -1
- package/dist/payments/chain-config.d.ts.map +1 -1
- package/dist/payments/chain-config.js +13 -2
- package/dist/payments/chain-config.js.map +1 -1
- package/dist/payments/channel-session-state.d.ts +1 -13
- package/dist/payments/channel-session-state.d.ts.map +1 -1
- package/dist/payments/channel-session-state.js +2 -25
- package/dist/payments/channel-session-state.js.map +1 -1
- package/dist/payments/channel-store.d.ts +2 -51
- package/dist/payments/channel-store.d.ts.map +1 -1
- package/dist/payments/channel-store.js +3 -14
- package/dist/payments/channel-store.js.map +1 -1
- package/dist/payments/channel-usage-accounting.d.ts +1 -17
- package/dist/payments/channel-usage-accounting.d.ts.map +1 -1
- package/dist/payments/channel-usage-accounting.js +2 -65
- package/dist/payments/channel-usage-accounting.js.map +1 -1
- package/dist/payments/evm/base-evm-client.d.ts +1 -26
- package/dist/payments/evm/base-evm-client.d.ts.map +1 -1
- package/dist/payments/evm/base-evm-client.js +2 -115
- package/dist/payments/evm/base-evm-client.js.map +1 -1
- package/dist/payments/evm/channels-client.d.ts +1 -85
- package/dist/payments/evm/channels-client.d.ts.map +1 -1
- package/dist/payments/evm/channels-client.js +2 -193
- package/dist/payments/evm/channels-client.js.map +1 -1
- package/dist/payments/evm/deposits-client.d.ts +1 -29
- package/dist/payments/evm/deposits-client.d.ts.map +1 -1
- package/dist/payments/evm/deposits-client.js +2 -67
- package/dist/payments/evm/deposits-client.js.map +1 -1
- package/dist/payments/evm/signatures.d.ts +1 -203
- package/dist/payments/evm/signatures.d.ts.map +1 -1
- package/dist/payments/evm/signatures.js +2 -236
- package/dist/payments/evm/signatures.js.map +1 -1
- package/dist/payments/evm/subpool-client.d.ts +32 -0
- package/dist/payments/evm/subpool-client.d.ts.map +1 -0
- package/dist/payments/evm/subpool-client.js +158 -0
- package/dist/payments/evm/subpool-client.js.map +1 -0
- package/dist/payments/index.d.ts +1 -1
- package/dist/payments/index.d.ts.map +1 -1
- package/dist/payments/index.js +1 -1
- package/dist/payments/index.js.map +1 -1
- package/dist/payments/pricing.d.ts +1 -26
- package/dist/payments/pricing.d.ts.map +1 -1
- package/dist/payments/pricing.js +2 -36
- package/dist/payments/pricing.js.map +1 -1
- package/dist/payments/seller-payment-manager.d.ts +7 -0
- package/dist/payments/seller-payment-manager.d.ts.map +1 -1
- package/dist/payments/seller-payment-manager.js +27 -2
- package/dist/payments/seller-payment-manager.js.map +1 -1
- package/dist/payments/usdc-utils.d.ts +1 -8
- package/dist/payments/usdc-utils.d.ts.map +1 -1
- package/dist/payments/usdc-utils.js +2 -16
- package/dist/payments/usdc-utils.js.map +1 -1
- package/dist/proxy/proxy-mux.d.ts +1 -69
- package/dist/proxy/proxy-mux.d.ts.map +1 -1
- package/dist/proxy/proxy-mux.js +2 -346
- package/dist/proxy/proxy-mux.js.map +1 -1
- package/dist/proxy/request-codec.d.ts +1 -41
- package/dist/proxy/request-codec.d.ts.map +1 -1
- package/dist/proxy/request-codec.js +2 -280
- package/dist/proxy/request-codec.js.map +1 -1
- package/dist/seller-request-handler.d.ts +10 -3
- package/dist/seller-request-handler.d.ts.map +1 -1
- package/dist/seller-request-handler.js +112 -17
- package/dist/seller-request-handler.js.map +1 -1
- package/dist/types/billing.d.ts +2 -0
- package/dist/types/billing.d.ts.map +1 -0
- package/dist/types/billing.js +2 -0
- package/dist/types/billing.js.map +1 -0
- package/dist/types/capability.d.ts +1 -25
- package/dist/types/capability.d.ts.map +1 -1
- package/dist/types/capability.js +2 -1
- package/dist/types/capability.js.map +1 -1
- package/dist/types/connection.d.ts +1 -26
- package/dist/types/connection.d.ts.map +1 -1
- package/dist/types/connection.js +2 -10
- package/dist/types/connection.js.map +1 -1
- package/dist/types/http.d.ts +1 -39
- package/dist/types/http.d.ts.map +1 -1
- package/dist/types/http.js +2 -16
- package/dist/types/http.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/peer.d.ts +9 -31
- package/dist/types/peer.d.ts.map +1 -1
- package/dist/types/peer.js +2 -14
- package/dist/types/peer.js.map +1 -1
- package/dist/types/protocol.d.ts +1 -306
- package/dist/types/protocol.d.ts.map +1 -1
- package/dist/types/protocol.js +2 -81
- package/dist/types/protocol.js.map +1 -1
- package/dist/types/service-api.d.ts +1 -5
- package/dist/types/service-api.d.ts.map +1 -1
- package/dist/types/service-api.js +2 -12
- package/dist/types/service-api.js.map +1 -1
- package/dist/utils/debug.d.ts +1 -5
- package/dist/utils/debug.d.ts.map +1 -1
- package/dist/utils/debug.js +2 -52
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/hex.d.ts +1 -2
- package/dist/utils/hex.d.ts.map +1 -1
- package/dist/utils/hex.js +2 -14
- package/dist/utils/hex.js.map +1 -1
- package/dist/utils/json-codec.d.ts +1 -9
- package/dist/utils/json-codec.d.ts.map +1 -1
- package/dist/utils/json-codec.js +2 -51
- package/dist/utils/json-codec.js.map +1 -1
- package/dist/utils/response-usage.d.ts +1 -9
- package/dist/utils/response-usage.d.ts.map +1 -1
- package/dist/utils/response-usage.js +2 -39
- package/dist/utils/response-usage.js.map +1 -1
- package/dist/verification/codec.d.ts +1 -3
- package/dist/verification/codec.d.ts.map +1 -1
- package/dist/verification/codec.js +2 -37
- package/dist/verification/codec.js.map +1 -1
- package/dist/verification/response-auth.d.ts +1 -30
- package/dist/verification/response-auth.d.ts.map +1 -1
- package/dist/verification/response-auth.js +2 -110
- package/dist/verification/response-auth.js.map +1 -1
- package/dist/verification/verification-mux.d.ts +1 -19
- package/dist/verification/verification-mux.d.ts.map +1 -1
- package/dist/verification/verification-mux.js +2 -99
- package/dist/verification/verification-mux.js.map +1 -1
- 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 @@
|
|
|
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 @@
|
|
|
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
|
-
|
|
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":"
|
|
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
|
-
|
|
2
|
-
|
|
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":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAS7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAA8E,YAAY,EAAE,iBAAiB,EAAwB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"announcer.d.ts","sourceRoot":"","sources":["../../src/discovery/announcer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAS7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAA8E,YAAY,EAAE,iBAAiB,EAAwB,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAWjM,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAKtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAOxD,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,KAAK,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,wBAAwB,CAAC,EAAE,0BAA0B,CAAC;QACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAC1D,cAAc,EAAE,MAAM,CAAC;QACvB,yEAAyE;QACzE,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC;QAC5B,0EAA0E;QAC1E,OAAO,CAAC,EAAE;YACR,QAAQ,EAAE;gBAAE,kBAAkB,EAAE,MAAM,CAAC;gBAAC,mBAAmB,EAAE,MAAM,CAAA;aAAE,CAAC;YACtE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;gBAAE,kBAAkB,EAAE,MAAM,CAAC;gBAAC,mBAAmB,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SACxF,CAAC;KACH,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uFAAuF;IACvF,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,GAAG,CACV,MAAM,EACN;QACE,QAAQ,EAAE;YAAE,kBAAkB,EAAE,MAAM,CAAC;YAAC,mBAAmB,EAAE,MAAM,CAAA;SAAE,CAAC;QACtE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,kBAAkB,EAAE,MAAM,CAAC;YAAC,mBAAmB,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACxF,CACF,CAAC;IACF,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,gBAAgB,CAAC;IACjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,2EAA2E;IAC3E,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AASD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,WAAW,CAA8C;IACjE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,eAAe,CAA6B;gBAExC,MAAM,EAAE,eAAe;IAI7B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/B;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,qBAAqB,IAAI,IAAI;IAgB7B,oBAAoB,IAAI,IAAI;IAS5B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,0BAA0B;IAuBlC,UAAU,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAI3D,iBAAiB,IAAI,YAAY,GAAG,IAAI;IAIxC,yEAAyE;IACzE,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,wBAAwB;YA6ClB,oBAAoB;IAoGlC,OAAO,CAAC,wBAAwB;IAchC;;;;;;;;;;;;;;;;;OAiBG;YACW,eAAe;YAyCf,iBAAiB;IAa/B,OAAO,CAAC,2BAA2B;IA+BnC,OAAO,CAAC,6BAA6B;IA+BrC,OAAO,CAAC,kCAAkC;IA0B1C,OAAO,CAAC,6BAA6B;CAuBtC"}
|