@antseed/node 0.2.156 → 0.2.157

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 (155) hide show
  1. package/dist/discovery/announcer.d.ts +13 -1
  2. package/dist/discovery/announcer.d.ts.map +1 -1
  3. package/dist/discovery/announcer.js +64 -9
  4. package/dist/discovery/announcer.js.map +1 -1
  5. package/dist/discovery/http-metadata-resolver.d.ts +1 -1
  6. package/dist/discovery/http-metadata-resolver.d.ts.map +1 -1
  7. package/dist/discovery/http-metadata-resolver.js +7 -1
  8. package/dist/discovery/http-metadata-resolver.js.map +1 -1
  9. package/dist/discovery/index.d.ts +3 -2
  10. package/dist/discovery/index.d.ts.map +1 -1
  11. package/dist/discovery/index.js +2 -1
  12. package/dist/discovery/index.js.map +1 -1
  13. package/dist/discovery/metadata/define-version.d.ts +40 -0
  14. package/dist/discovery/metadata/define-version.d.ts.map +1 -0
  15. package/dist/discovery/metadata/define-version.js +104 -0
  16. package/dist/discovery/metadata/define-version.js.map +1 -0
  17. package/dist/discovery/metadata/field.d.ts +26 -0
  18. package/dist/discovery/metadata/field.d.ts.map +1 -0
  19. package/dist/discovery/metadata/field.js +2 -0
  20. package/dist/discovery/metadata/field.js.map +1 -0
  21. package/dist/discovery/metadata/fields/offerings.d.ts +7 -0
  22. package/dist/discovery/metadata/fields/offerings.d.ts.map +1 -0
  23. package/dist/discovery/metadata/fields/offerings.js +52 -0
  24. package/dist/discovery/metadata/fields/offerings.js.map +1 -0
  25. package/dist/discovery/metadata/fields/on-chain-stats.d.ts +6 -0
  26. package/dist/discovery/metadata/fields/on-chain-stats.d.ts.map +1 -0
  27. package/dist/discovery/metadata/fields/on-chain-stats.js +30 -0
  28. package/dist/discovery/metadata/fields/on-chain-stats.js.map +1 -0
  29. package/dist/discovery/metadata/fields/peer-capabilities.d.ts +4 -0
  30. package/dist/discovery/metadata/fields/peer-capabilities.d.ts.map +1 -0
  31. package/dist/discovery/metadata/fields/peer-capabilities.js +21 -0
  32. package/dist/discovery/metadata/fields/peer-capabilities.js.map +1 -0
  33. package/dist/discovery/metadata/fields/peer-profile.d.ts +11 -0
  34. package/dist/discovery/metadata/fields/peer-profile.d.ts.map +1 -0
  35. package/dist/discovery/metadata/fields/peer-profile.js +58 -0
  36. package/dist/discovery/metadata/fields/peer-profile.js.map +1 -0
  37. package/dist/discovery/metadata/fields/provider-basics.d.ts +12 -0
  38. package/dist/discovery/metadata/fields/provider-basics.d.ts.map +1 -0
  39. package/dist/discovery/metadata/fields/provider-basics.js +87 -0
  40. package/dist/discovery/metadata/fields/provider-basics.js.map +1 -0
  41. package/dist/discovery/metadata/fields/service-api-protocols.d.ts +4 -0
  42. package/dist/discovery/metadata/fields/service-api-protocols.d.ts.map +1 -0
  43. package/dist/discovery/metadata/fields/service-api-protocols.js +40 -0
  44. package/dist/discovery/metadata/fields/service-api-protocols.js.map +1 -0
  45. package/dist/discovery/metadata/fields/service-capabilities.d.ts +7 -0
  46. package/dist/discovery/metadata/fields/service-capabilities.d.ts.map +1 -0
  47. package/dist/discovery/metadata/fields/service-capabilities.js +229 -0
  48. package/dist/discovery/metadata/fields/service-capabilities.js.map +1 -0
  49. package/dist/discovery/metadata/fields/service-categories.d.ts +4 -0
  50. package/dist/discovery/metadata/fields/service-categories.d.ts.map +1 -0
  51. package/dist/discovery/metadata/fields/service-categories.js +37 -0
  52. package/dist/discovery/metadata/fields/service-categories.js.map +1 -0
  53. package/dist/discovery/metadata/fields/service-health.d.ts +7 -0
  54. package/dist/discovery/metadata/fields/service-health.d.ts.map +1 -0
  55. package/dist/discovery/metadata/fields/service-health.js +90 -0
  56. package/dist/discovery/metadata/fields/service-health.js.map +1 -0
  57. package/dist/discovery/metadata/fields/service-unit-billing.d.ts +8 -0
  58. package/dist/discovery/metadata/fields/service-unit-billing.d.ts.map +1 -0
  59. package/dist/discovery/metadata/fields/service-unit-billing.js +81 -0
  60. package/dist/discovery/metadata/fields/service-unit-billing.js.map +1 -0
  61. package/dist/discovery/metadata/fields/verifications.d.ts +7 -0
  62. package/dist/discovery/metadata/fields/verifications.d.ts.map +1 -0
  63. package/dist/discovery/metadata/fields/verifications.js +96 -0
  64. package/dist/discovery/metadata/fields/verifications.js.map +1 -0
  65. package/dist/discovery/metadata/index.d.ts +27 -0
  66. package/dist/discovery/metadata/index.d.ts.map +1 -0
  67. package/dist/discovery/metadata/index.js +55 -0
  68. package/dist/discovery/metadata/index.js.map +1 -0
  69. package/dist/discovery/metadata/versions/v10.d.ts +5 -0
  70. package/dist/discovery/metadata/versions/v10.d.ts.map +1 -0
  71. package/dist/discovery/metadata/versions/v10.js +32 -0
  72. package/dist/discovery/metadata/versions/v10.js.map +1 -0
  73. package/dist/discovery/metadata/versions/v11.d.ts +5 -0
  74. package/dist/discovery/metadata/versions/v11.d.ts.map +1 -0
  75. package/dist/discovery/metadata/versions/v11.js +11 -0
  76. package/dist/discovery/metadata/versions/v11.js.map +1 -0
  77. package/dist/discovery/metadata/versions/v12.d.ts +5 -0
  78. package/dist/discovery/metadata/versions/v12.d.ts.map +1 -0
  79. package/dist/discovery/metadata/versions/v12.js +66 -0
  80. package/dist/discovery/metadata/versions/v12.js.map +1 -0
  81. package/dist/discovery/metadata/versions/v13.d.ts +5 -0
  82. package/dist/discovery/metadata/versions/v13.d.ts.map +1 -0
  83. package/dist/discovery/metadata/versions/v13.js +16 -0
  84. package/dist/discovery/metadata/versions/v13.js.map +1 -0
  85. package/dist/discovery/metadata/wire.d.ts +54 -0
  86. package/dist/discovery/metadata/wire.d.ts.map +1 -0
  87. package/dist/discovery/metadata/wire.js +149 -0
  88. package/dist/discovery/metadata/wire.js.map +1 -0
  89. package/dist/discovery/metadata-codec.d.ts +1 -38
  90. package/dist/discovery/metadata-codec.d.ts.map +1 -1
  91. package/dist/discovery/metadata-codec.js +3 -1154
  92. package/dist/discovery/metadata-codec.js.map +1 -1
  93. package/dist/discovery/metadata-server.d.ts +3 -2
  94. package/dist/discovery/metadata-server.d.ts.map +1 -1
  95. package/dist/discovery/metadata-server.js +4 -1
  96. package/dist/discovery/metadata-server.js.map +1 -1
  97. package/dist/discovery/metadata-validator.d.ts.map +1 -1
  98. package/dist/discovery/metadata-validator.js +62 -1
  99. package/dist/discovery/metadata-validator.js.map +1 -1
  100. package/dist/discovery/service-catalog.d.ts +13 -2
  101. package/dist/discovery/service-catalog.d.ts.map +1 -1
  102. package/dist/discovery/service-catalog.js +6 -1
  103. package/dist/discovery/service-catalog.js.map +1 -1
  104. package/dist/health/gas-auto-refuel.d.ts +138 -0
  105. package/dist/health/gas-auto-refuel.d.ts.map +1 -0
  106. package/dist/health/gas-auto-refuel.js +216 -0
  107. package/dist/health/gas-auto-refuel.js.map +1 -0
  108. package/dist/health/gas-health-monitor.d.ts +4 -0
  109. package/dist/health/gas-health-monitor.d.ts.map +1 -1
  110. package/dist/health/gas-health-monitor.js +13 -0
  111. package/dist/health/gas-health-monitor.js.map +1 -1
  112. package/dist/health/model-health-checker.d.ts +58 -33
  113. package/dist/health/model-health-checker.d.ts.map +1 -1
  114. package/dist/health/model-health-checker.js +250 -121
  115. package/dist/health/model-health-checker.js.map +1 -1
  116. package/dist/health/self-health-error.d.ts +20 -0
  117. package/dist/health/self-health-error.d.ts.map +1 -0
  118. package/dist/health/self-health-error.js +60 -0
  119. package/dist/health/self-health-error.js.map +1 -0
  120. package/dist/health/seller-events.d.ts +1 -1
  121. package/dist/health/seller-events.d.ts.map +1 -1
  122. package/dist/health/seller-events.js.map +1 -1
  123. package/dist/index.d.ts +7 -4
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js +5 -2
  126. package/dist/index.js.map +1 -1
  127. package/dist/interfaces/seller-provider.d.ts +11 -5
  128. package/dist/interfaces/seller-provider.d.ts.map +1 -1
  129. package/dist/node.d.ts +8 -2
  130. package/dist/node.d.ts.map +1 -1
  131. package/dist/node.js +36 -89
  132. package/dist/node.js.map +1 -1
  133. package/dist/p2p/connection-manager.d.ts +5 -1
  134. package/dist/p2p/connection-manager.d.ts.map +1 -1
  135. package/dist/p2p/connection-manager.js +48 -13
  136. package/dist/p2p/connection-manager.js.map +1 -1
  137. package/dist/payments/chain-config.d.ts +11 -0
  138. package/dist/payments/chain-config.d.ts.map +1 -1
  139. package/dist/payments/chain-config.js +7 -0
  140. package/dist/payments/chain-config.js.map +1 -1
  141. package/dist/payments/evm/usdc-eth-swap-client.d.ts +45 -0
  142. package/dist/payments/evm/usdc-eth-swap-client.d.ts.map +1 -0
  143. package/dist/payments/evm/usdc-eth-swap-client.js +83 -0
  144. package/dist/payments/evm/usdc-eth-swap-client.js.map +1 -0
  145. package/dist/payments/index.d.ts +2 -0
  146. package/dist/payments/index.d.ts.map +1 -1
  147. package/dist/payments/index.js +2 -0
  148. package/dist/payments/index.js.map +1 -1
  149. package/dist/seller-request-handler.d.ts +9 -0
  150. package/dist/seller-request-handler.d.ts.map +1 -1
  151. package/dist/seller-request-handler.js +78 -12
  152. package/dist/seller-request-handler.js.map +1 -1
  153. package/dist/types/peer.d.ts +4 -2
  154. package/dist/types/peer.d.ts.map +1 -1
  155. package/package.json +3 -3
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Signed peer metadata codec.
3
+ *
4
+ * Every metadata version lives in its own file under `versions/` and lists
5
+ * the shared field modules from `fields/` it carries, in wire order. To add a
6
+ * version: write the new field module, add `versions/vNN.ts` that extends the
7
+ * previous layout, register it below, and bump METADATA_VERSION. Older
8
+ * versions keep their bytes, so sellers can keep serving them to buyers that
9
+ * have not upgraded (see `negotiateMetadataVersion`).
10
+ */
11
+ import type { PeerMetadata } from "../peer-metadata.js";
12
+ import type { MetadataVersionCodec } from "./define-version.js";
13
+ export type { MetadataVersionCodec } from "./define-version.js";
14
+ export declare function getMetadataCodec(version: number): MetadataVersionCodec;
15
+ /** Versions a seller signs on every refresh, oldest first. */
16
+ export declare const SERVED_METADATA_VERSIONS: readonly number[];
17
+ /**
18
+ * The version a seller should answer with. `requested` is the newest version
19
+ * the buyer understands, from the metadata version request header; buyers
20
+ * that predate the header send nothing and get the legacy version.
21
+ */
22
+ export declare function negotiateMetadataVersion(requested: number | undefined): number;
23
+ /** Signed bytes for `metadata`, laid out by its own `version`. */
24
+ export declare function encodeMetadataForSigning(metadata: PeerMetadata): Uint8Array;
25
+ export declare function encodeMetadata(metadata: PeerMetadata): Uint8Array;
26
+ export declare function decodeMetadata(data: Uint8Array): PeerMetadata;
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/discovery/metadata/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAMhE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAUhE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB,CAItE;AAED,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,EAAE,SAAS,MAAM,EAG9B,CAAC;AAEzB;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAS9E;AAED,kEAAkE;AAClE,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,YAAY,GAAG,UAAU,CAE3E;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,UAAU,CAOjE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CAG7D"}
@@ -0,0 +1,55 @@
1
+ import { LEGACY_METADATA_VERSION, METADATA_VERSION } from "../peer-metadata.js";
2
+ import { hexToBytes } from "../../utils/hex.js";
3
+ import { metadataV10 } from "./versions/v10.js";
4
+ import { metadataV11 } from "./versions/v11.js";
5
+ import { metadataV12 } from "./versions/v12.js";
6
+ import { metadataV13 } from "./versions/v13.js";
7
+ const CODECS = new Map([metadataV10, metadataV11, metadataV12, metadataV13].map((codec) => [codec.version, codec]));
8
+ if (!CODECS.has(METADATA_VERSION)) {
9
+ throw new Error(`No codec registered for METADATA_VERSION ${METADATA_VERSION}`);
10
+ }
11
+ export function getMetadataCodec(version) {
12
+ const codec = CODECS.get(version);
13
+ if (!codec)
14
+ throw new Error(`Unsupported metadata version ${version}`);
15
+ return codec;
16
+ }
17
+ /** Versions a seller signs on every refresh, oldest first. */
18
+ export const SERVED_METADATA_VERSIONS = [...CODECS.values()]
19
+ .filter((codec) => codec.servable && codec.version <= METADATA_VERSION)
20
+ .map((codec) => codec.version)
21
+ .sort((a, b) => a - b);
22
+ /**
23
+ * The version a seller should answer with. `requested` is the newest version
24
+ * the buyer understands, from the metadata version request header; buyers
25
+ * that predate the header send nothing and get the legacy version.
26
+ */
27
+ export function negotiateMetadataVersion(requested) {
28
+ const ceiling = requested === undefined || !Number.isSafeInteger(requested)
29
+ ? LEGACY_METADATA_VERSION
30
+ : Math.min(requested, METADATA_VERSION);
31
+ let chosen = SERVED_METADATA_VERSIONS[0];
32
+ for (const version of SERVED_METADATA_VERSIONS) {
33
+ if (version <= ceiling)
34
+ chosen = version;
35
+ }
36
+ return chosen;
37
+ }
38
+ /** Signed bytes for `metadata`, laid out by its own `version`. */
39
+ export function encodeMetadataForSigning(metadata) {
40
+ return getMetadataCodec(metadata.version).encodeBody(metadata);
41
+ }
42
+ export function encodeMetadata(metadata) {
43
+ const body = encodeMetadataForSigning(metadata);
44
+ const signature = hexToBytes(metadata.signature);
45
+ const result = new Uint8Array(body.length + signature.length);
46
+ result.set(body, 0);
47
+ result.set(signature, body.length);
48
+ return result;
49
+ }
50
+ export function decodeMetadata(data) {
51
+ if (data.length < 1)
52
+ throw new Error("Truncated metadata buffer");
53
+ return getMetadataCodec(data[0]).decode(data);
54
+ }
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/discovery/metadata/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type MetadataLayout } from "../define-version.js";
2
+ /** v10: peer capabilities. The oldest version buyers accept. Decode-only. */
3
+ export declare const V10_LAYOUT: MetadataLayout;
4
+ export declare const metadataV10: import("../define-version.js").MetadataVersionCodec;
5
+ //# sourceMappingURL=v10.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v10.d.ts","sourceRoot":"","sources":["../../../../src/discovery/metadata/versions/v10.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAgBlF,6EAA6E;AAC7E,eAAO,MAAM,UAAU,EAAE,cAmBxB,CAAC;AAEF,eAAO,MAAM,WAAW,qDAAkF,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { defineMetadataVersion } from "../define-version.js";
2
+ import { offeringsField } from "../fields/offerings.js";
3
+ import { onChainStatsField } from "../fields/on-chain-stats.js";
4
+ import { peerCapabilitiesField } from "../fields/peer-capabilities.js";
5
+ import { displayNameField, publicAddressField, sellerContractField } from "../fields/peer-profile.js";
6
+ import { defaultPricingField, providerLoadField, providerNameField, servicePricingField, servicesField, } from "../fields/provider-basics.js";
7
+ import { serviceApiProtocolsField } from "../fields/service-api-protocols.js";
8
+ import { serviceCategoriesField } from "../fields/service-categories.js";
9
+ import { verificationsField } from "../fields/verifications.js";
10
+ /** v10: peer capabilities. The oldest version buyers accept. Decode-only. */
11
+ export const V10_LAYOUT = {
12
+ providerFields: [
13
+ providerNameField,
14
+ servicesField,
15
+ defaultPricingField,
16
+ servicePricingField,
17
+ serviceCategoriesField,
18
+ serviceApiProtocolsField,
19
+ providerLoadField,
20
+ ],
21
+ peerFields: [
22
+ displayNameField,
23
+ publicAddressField,
24
+ sellerContractField,
25
+ verificationsField,
26
+ offeringsField,
27
+ onChainStatsField,
28
+ peerCapabilitiesField,
29
+ ],
30
+ };
31
+ export const metadataV10 = defineMetadataVersion({ version: 10, wideServiceCounts: false, ...V10_LAYOUT });
32
+ //# sourceMappingURL=v10.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v10.js","sourceRoot":"","sources":["../../../../src/discovery/metadata/versions/v10.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAuB,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACtG,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,cAAc,EAAE;QACd,iBAAiB;QACjB,aAAa;QACb,mBAAmB;QACnB,mBAAmB;QACnB,sBAAsB;QACtB,wBAAwB;QACxB,iBAAiB;KAClB;IACD,UAAU,EAAE;QACV,gBAAgB;QAChB,kBAAkB;QAClB,mBAAmB;QACnB,kBAAkB;QAClB,cAAc;QACd,iBAAiB;QACjB,qBAAqB;KACtB;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type MetadataLayout } from "../define-version.js";
2
+ /** v11: per-service unit billing models. Decode-only. */
3
+ export declare const V11_LAYOUT: MetadataLayout;
4
+ export declare const metadataV11: import("../define-version.js").MetadataVersionCodec;
5
+ //# sourceMappingURL=v11.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v11.d.ts","sourceRoot":"","sources":["../../../../src/discovery/metadata/versions/v11.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKhG,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,cAGxB,CAAC;AAEF,eAAO,MAAM,WAAW,qDAAkF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { defineMetadataVersion, insertBefore } from "../define-version.js";
2
+ import { providerLoadField } from "../fields/provider-basics.js";
3
+ import { serviceUnitBillingField } from "../fields/service-unit-billing.js";
4
+ import { V10_LAYOUT } from "./v10.js";
5
+ /** v11: per-service unit billing models. Decode-only. */
6
+ export const V11_LAYOUT = {
7
+ providerFields: insertBefore(V10_LAYOUT.providerFields, providerLoadField, serviceUnitBillingField),
8
+ peerFields: V10_LAYOUT.peerFields,
9
+ };
10
+ export const metadataV11 = defineMetadataVersion({ version: 11, wideServiceCounts: false, ...V11_LAYOUT });
11
+ //# sourceMappingURL=v11.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v11.js","sourceRoot":"","sources":["../../../../src/discovery/metadata/versions/v11.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAuB,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,yDAAyD;AACzD,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,cAAc,EAAE,iBAAiB,EAAE,uBAAuB,CAAC;IACnG,UAAU,EAAE,UAAU,CAAC,UAAU;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type MetadataLayout } from "../define-version.js";
2
+ /** v12: per-service capability hints and u16 service entry counts. */
3
+ export declare const V12_LAYOUT: MetadataLayout;
4
+ export declare const metadataV12: import("../define-version.js").MetadataVersionCodec;
5
+ //# sourceMappingURL=v12.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v12.d.ts","sourceRoot":"","sources":["../../../../src/discovery/metadata/versions/v12.ts"],"names":[],"mappings":"AACA,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKhG,sEAAsE;AACtE,eAAO,MAAM,UAAU,EAAE,cAGxB,CAAC;AAkDF,eAAO,MAAM,WAAW,qDAKtB,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { defineMetadataVersion, insertBefore } from "../define-version.js";
2
+ import { providerLoadField } from "../fields/provider-basics.js";
3
+ import { serviceCapabilitiesField } from "../fields/service-capabilities.js";
4
+ import { V11_LAYOUT } from "./v11.js";
5
+ /** v12: per-service capability hints and u16 service entry counts. */
6
+ export const V12_LAYOUT = {
7
+ providerFields: insertBefore(V11_LAYOUT.providerFields, providerLoadField, serviceCapabilitiesField),
8
+ peerFields: V11_LAYOUT.peerFields,
9
+ };
10
+ /** Per-service maps that must not mention a service missing from `services`. */
11
+ const PER_SERVICE_KEYS = [
12
+ "servicePricing",
13
+ "serviceCategories",
14
+ "serviceApiProtocols",
15
+ "serviceUnitBillingModels",
16
+ "serviceCapabilities",
17
+ ];
18
+ /**
19
+ * v12 has no service health, and v12 buyers would route to anything listed.
20
+ * Failing services are left out instead, which is how sellers withdrew them
21
+ * before v13. A provider whose services are all failing is left out
22
+ * entirely, because an empty service list means "any service".
23
+ */
24
+ function withoutFailingServices(latest) {
25
+ const providers = [];
26
+ for (const provider of latest.providers) {
27
+ const health = provider.serviceHealth;
28
+ if (!health) {
29
+ providers.push(provider);
30
+ continue;
31
+ }
32
+ const failing = new Set(Object.keys(health).filter((service) => health[service]?.status === "failing"));
33
+ if (failing.size === 0) {
34
+ providers.push(provider);
35
+ continue;
36
+ }
37
+ if (provider.services.length === 0) {
38
+ // Wildcard providers cannot drop single services.
39
+ providers.push(provider);
40
+ continue;
41
+ }
42
+ const services = provider.services.filter((service) => !failing.has(service));
43
+ if (services.length === 0)
44
+ continue;
45
+ const next = { ...provider, services };
46
+ for (const key of PER_SERVICE_KEYS) {
47
+ const map = provider[key];
48
+ if (!map)
49
+ continue;
50
+ const kept = Object.fromEntries(Object.entries(map).filter(([service]) => !failing.has(service)));
51
+ if (Object.keys(kept).length > 0)
52
+ next[key] = kept;
53
+ else
54
+ delete next[key];
55
+ }
56
+ providers.push(next);
57
+ }
58
+ return { ...latest, providers };
59
+ }
60
+ export const metadataV12 = defineMetadataVersion({
61
+ version: 12,
62
+ wideServiceCounts: true,
63
+ ...V12_LAYOUT,
64
+ fromLatest: withoutFailingServices,
65
+ });
66
+ //# sourceMappingURL=v12.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v12.js","sourceRoot":"","sources":["../../../../src/discovery/metadata/versions/v12.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type MetadataLayout } from "../define-version.js";
2
+ /** v13: per-service seller self health check results. */
3
+ export declare const V13_LAYOUT: MetadataLayout;
4
+ export declare const metadataV13: import("../define-version.js").MetadataVersionCodec;
5
+ //# sourceMappingURL=v13.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v13.d.ts","sourceRoot":"","sources":["../../../../src/discovery/metadata/versions/v13.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKhG,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,cAGxB,CAAC;AAEF,eAAO,MAAM,WAAW,qDAKtB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { defineMetadataVersion, insertBefore } from "../define-version.js";
2
+ import { providerLoadField } from "../fields/provider-basics.js";
3
+ import { serviceHealthField } from "../fields/service-health.js";
4
+ import { V12_LAYOUT } from "./v12.js";
5
+ /** v13: per-service seller self health check results. */
6
+ export const V13_LAYOUT = {
7
+ providerFields: insertBefore(V12_LAYOUT.providerFields, providerLoadField, serviceHealthField),
8
+ peerFields: V12_LAYOUT.peerFields,
9
+ };
10
+ export const metadataV13 = defineMetadataVersion({
11
+ version: 13,
12
+ wideServiceCounts: true,
13
+ ...V13_LAYOUT,
14
+ fromLatest: (latest) => latest,
15
+ });
16
+ //# sourceMappingURL=v13.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v13.js","sourceRoot":"","sources":["../../../../src/discovery/metadata/versions/v13.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAuB,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,yDAAyD;AACzD,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,cAAc,EAAE,YAAY,CAAC,UAAU,CAAC,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,CAAC;IAC9F,UAAU,EAAE,UAAU,CAAC,UAAU;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAC;IAC/C,OAAO,EAAE,EAAE;IACX,iBAAiB,EAAE,IAAI;IACvB,GAAG,UAAU;IACb,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM;CAC/B,CAAC,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Byte-level helpers shared by every metadata version. All multi-byte values
3
+ * are big-endian.
4
+ */
5
+ export declare const SIGNATURE_LENGTH = 65;
6
+ /**
7
+ * A map for decoded service-keyed entries. It has no prototype, so a service
8
+ * named "__proto__" or "constructor" decodes as an ordinary entry.
9
+ */
10
+ export declare function serviceMap<T>(): Record<string, T>;
11
+ export declare class MetadataWriter {
12
+ private readonly parts;
13
+ u8(value: number): void;
14
+ u16(value: number): void;
15
+ u32(value: number): void;
16
+ u64(value: number): void;
17
+ f32(value: number): void;
18
+ bytes(value: Uint8Array): void;
19
+ /** u8-length-prefixed UTF-8. Throws past 255 bytes. */
20
+ utf8(value: string): void;
21
+ /**
22
+ * u8-length-prefixed UTF-8 whose length byte wraps past 255 instead of
23
+ * throwing. Older fields were written this way; their bytes are signed, so
24
+ * they must stay exactly as they were.
25
+ */
26
+ utf8Wrapping(value: string): void;
27
+ /** u16-length-prefixed UTF-8. */
28
+ utf8Long(value: string): void;
29
+ /** Entry count for a per-service list: u16 when `wide`, u8 otherwise. */
30
+ serviceEntryCount(count: number, wide: boolean): void;
31
+ finish(): Uint8Array;
32
+ }
33
+ export declare class MetadataReader {
34
+ private readonly data;
35
+ private readonly end;
36
+ offset: number;
37
+ /** `end` is the first byte this reader may not read (the signature start). */
38
+ constructor(data: Uint8Array, end: number);
39
+ remaining(): number;
40
+ private need;
41
+ private view;
42
+ u8(): number;
43
+ u16(): number;
44
+ u32(): number;
45
+ u64(): number;
46
+ f32(): number;
47
+ bytes(count: number): Uint8Array;
48
+ utf8(): string;
49
+ utf8Long(): string;
50
+ serviceEntryCount(wide: boolean): number;
51
+ }
52
+ /** Code-unit string order: signed bytes must not depend on the verifier's locale. */
53
+ export declare function compareCodeUnits(a: string, b: string): number;
54
+ //# sourceMappingURL=wire.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../src/discovery/metadata/wire.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAEjD;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAE1C,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMxB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMxB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMxB,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMxB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAI9B,uDAAuD;IACvD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IASzB;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMjC,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,yEAAyE;IACzE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;IAUrD,MAAM,IAAI,UAAU;CAUrB;AAED,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAc,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHnE,MAAM,SAAK;IAEX,8EAA8E;gBACjD,IAAI,EAAE,UAAU,EAAmB,GAAG,EAAE,MAAM;IAE3E,SAAS,IAAI,MAAM;IAInB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,IAAI;IAOZ,EAAE,IAAI,MAAM;IAKZ,GAAG,IAAI,MAAM;IAIb,GAAG,IAAI,MAAM;IAIb,GAAG,IAAI,MAAM;IAIb,GAAG,IAAI,MAAM;IAIb,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU;IAOhC,IAAI,IAAI,MAAM;IAId,QAAQ,IAAI,MAAM;IAIlB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;CAGzC;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7D"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Byte-level helpers shared by every metadata version. All multi-byte values
3
+ * are big-endian.
4
+ */
5
+ const textEncoder = new TextEncoder();
6
+ const textDecoder = new TextDecoder();
7
+ export const SIGNATURE_LENGTH = 65;
8
+ /**
9
+ * A map for decoded service-keyed entries. It has no prototype, so a service
10
+ * named "__proto__" or "constructor" decodes as an ordinary entry.
11
+ */
12
+ export function serviceMap() {
13
+ return Object.create(null);
14
+ }
15
+ export class MetadataWriter {
16
+ parts = [];
17
+ u8(value) {
18
+ this.parts.push(new Uint8Array([value]));
19
+ }
20
+ u16(value) {
21
+ const buf = new ArrayBuffer(2);
22
+ new DataView(buf).setUint16(0, value, false);
23
+ this.parts.push(new Uint8Array(buf));
24
+ }
25
+ u32(value) {
26
+ const buf = new ArrayBuffer(4);
27
+ new DataView(buf).setUint32(0, value, false);
28
+ this.parts.push(new Uint8Array(buf));
29
+ }
30
+ u64(value) {
31
+ const buf = new ArrayBuffer(8);
32
+ new DataView(buf).setBigUint64(0, BigInt(value), false);
33
+ this.parts.push(new Uint8Array(buf));
34
+ }
35
+ f32(value) {
36
+ const buf = new ArrayBuffer(4);
37
+ new DataView(buf).setFloat32(0, value, false);
38
+ this.parts.push(new Uint8Array(buf));
39
+ }
40
+ bytes(value) {
41
+ this.parts.push(value);
42
+ }
43
+ /** u8-length-prefixed UTF-8. Throws past 255 bytes. */
44
+ utf8(value) {
45
+ const bytes = textEncoder.encode(value);
46
+ if (bytes.length > 255) {
47
+ throw new Error(`Metadata string too long (${bytes.length} bytes)`);
48
+ }
49
+ this.u8(bytes.length);
50
+ this.bytes(bytes);
51
+ }
52
+ /**
53
+ * u8-length-prefixed UTF-8 whose length byte wraps past 255 instead of
54
+ * throwing. Older fields were written this way; their bytes are signed, so
55
+ * they must stay exactly as they were.
56
+ */
57
+ utf8Wrapping(value) {
58
+ const bytes = textEncoder.encode(value);
59
+ this.u8(bytes.length);
60
+ this.bytes(bytes);
61
+ }
62
+ /** u16-length-prefixed UTF-8. */
63
+ utf8Long(value) {
64
+ const bytes = textEncoder.encode(value);
65
+ this.u16(bytes.length);
66
+ this.bytes(bytes);
67
+ }
68
+ /** Entry count for a per-service list: u16 when `wide`, u8 otherwise. */
69
+ serviceEntryCount(count, wide) {
70
+ if (wide) {
71
+ if (count > 0xffff)
72
+ throw new Error(`Service entry count ${count} exceeds uint16`);
73
+ this.u16(count);
74
+ return;
75
+ }
76
+ if (count > 0xff)
77
+ throw new Error(`Service entry count ${count} requires wide service counts`);
78
+ this.u8(count);
79
+ }
80
+ finish() {
81
+ const total = this.parts.reduce((sum, part) => sum + part.length, 0);
82
+ const result = new Uint8Array(total);
83
+ let offset = 0;
84
+ for (const part of this.parts) {
85
+ result.set(part, offset);
86
+ offset += part.length;
87
+ }
88
+ return result;
89
+ }
90
+ }
91
+ export class MetadataReader {
92
+ data;
93
+ end;
94
+ offset = 0;
95
+ /** `end` is the first byte this reader may not read (the signature start). */
96
+ constructor(data, end) {
97
+ this.data = data;
98
+ this.end = end;
99
+ }
100
+ remaining() {
101
+ return this.end - this.offset;
102
+ }
103
+ need(count) {
104
+ if (this.offset + count > this.end)
105
+ throw new Error("Truncated metadata buffer");
106
+ }
107
+ view(count) {
108
+ this.need(count);
109
+ const view = new DataView(this.data.buffer, this.data.byteOffset + this.offset, count);
110
+ this.offset += count;
111
+ return view;
112
+ }
113
+ u8() {
114
+ this.need(1);
115
+ return this.data[this.offset++];
116
+ }
117
+ u16() {
118
+ return this.view(2).getUint16(0, false);
119
+ }
120
+ u32() {
121
+ return this.view(4).getUint32(0, false);
122
+ }
123
+ u64() {
124
+ return Number(this.view(8).getBigUint64(0, false));
125
+ }
126
+ f32() {
127
+ return this.view(4).getFloat32(0, false);
128
+ }
129
+ bytes(count) {
130
+ this.need(count);
131
+ const value = this.data.slice(this.offset, this.offset + count);
132
+ this.offset += count;
133
+ return value;
134
+ }
135
+ utf8() {
136
+ return textDecoder.decode(this.bytes(this.u8()));
137
+ }
138
+ utf8Long() {
139
+ return textDecoder.decode(this.bytes(this.u16()));
140
+ }
141
+ serviceEntryCount(wide) {
142
+ return wide ? this.u16() : this.u8();
143
+ }
144
+ }
145
+ /** Code-unit string order: signed bytes must not depend on the verifier's locale. */
146
+ export function compareCodeUnits(a, b) {
147
+ return a < b ? -1 : a > b ? 1 : 0;
148
+ }
149
+ //# sourceMappingURL=wire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../../src/discovery/metadata/wire.ts"],"names":[],"mappings":"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"}
@@ -1,39 +1,2 @@
1
- import type { PeerMetadata } from "./peer-metadata.js";
2
- /**
3
- * Encode metadata into binary format:
4
- * [version:1][peerId:20][regionLen:1][region:N][timestamp:8 BigUint64][providerCount:1]
5
- * for each provider:
6
- * [providerLen:1][provider:N][serviceCount:1|2][services...]
7
- * [defaultInputPrice:4][defaultOutputPrice:4][defaultCachedInputPrice:4]
8
- * [servicePricingCount:1|2][servicePricingEntries...]
9
- * [serviceCategoryCount:1|2][serviceCategoryEntries...] (v3+ only)
10
- * [serviceApiProtocolCount:1|2][serviceApiProtocolEntries...] (v4+ only)
11
- * [maxConcurrency:2][currentLoad:2]
12
- * servicePricingEntry: [serviceLen:1][service:N][inputPrice:4][outputPrice:4][cachedInputPrice:4]
13
- * serviceCategoryEntry(v3+): [serviceLen:1][service:N][categoryCount:1][categories...]
14
- * category(v3+): [categoryLen:1][category:N]
15
- * serviceApiProtocolEntry(v4+): [serviceLen:1][service:N][protocolCount:1][protocols...]
16
- * protocol(v4+): [protocolLen:1][protocol:N]
17
- * [displayNameFlag:1][displayNameLen:1][displayName:N] (v3+ only)
18
- * [publicAddressFlag:1][publicAddressLen:1][publicAddress:N] (v5+ only)
19
- * [sellerContractFlag:1][sellerContract:20] (v8+ only)
20
- * [domainVerificationCount:1][domainVerificationEntries...] (v9+ only)
21
- * domainVerificationEntry(v9+): [domainLen:1][domain:N][methodCount:1][methodIds...]
22
- * [githubVerificationCount:1][githubVerificationEntries...] (v9+ only)
23
- * githubVerificationEntry(v9+): [usernameLen:1][username:N][repoLen:1][repo:N] (repoLen 0 = profile repo)
24
- * [offerings...]
25
- * [onChainStatsFlag:1][onChainStats:10]
26
- * [capabilityCount:1][capabilities...] (v10+ only)
27
- * capability(v10+): [capabilityLen:1][capability:N]
28
- * [signature:65]
29
- */
30
- export declare function encodeMetadata(metadata: PeerMetadata): Uint8Array;
31
- /**
32
- * Encode metadata without signature, for signing purposes.
33
- */
34
- export declare function encodeMetadataForSigning(metadata: PeerMetadata): Uint8Array;
35
- /**
36
- * Decode binary metadata back into PeerMetadata.
37
- */
38
- export declare function decodeMetadata(data: Uint8Array): PeerMetadata;
1
+ export { decodeMetadata, encodeMetadata, encodeMetadataForSigning, getMetadataCodec, negotiateMetadataVersion, SERVED_METADATA_VERSIONS, type MetadataVersionCodec, } from "./metadata/index.js";
39
2
  //# sourceMappingURL=metadata-codec.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-codec.d.ts","sourceRoot":"","sources":["../../src/discovery/metadata-codec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8E,YAAY,EAAgF,MAAM,oBAAoB,CAAC;AAqCjN;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,UAAU,CAQjE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,YAAY,GAAG,UAAU,CAE3E;AAiuBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,YAAY,CA8b7D"}
1
+ {"version":3,"file":"metadata-codec.d.ts","sourceRoot":"","sources":["../../src/discovery/metadata-codec.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC"}