@antseed/node 0.2.160 → 0.2.161

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 (124) hide show
  1. package/dist/discovery/metadata/define-version.d.ts +10 -3
  2. package/dist/discovery/metadata/define-version.d.ts.map +1 -1
  3. package/dist/discovery/metadata/define-version.js +6 -3
  4. package/dist/discovery/metadata/define-version.js.map +1 -1
  5. package/dist/discovery/metadata/fields/service-capabilities.d.ts +1 -1
  6. package/dist/discovery/metadata/fields/service-capabilities.d.ts.map +1 -1
  7. package/dist/discovery/metadata/fields/service-capabilities.js +59 -3
  8. package/dist/discovery/metadata/fields/service-capabilities.js.map +1 -1
  9. package/dist/discovery/metadata/index.d.ts +7 -0
  10. package/dist/discovery/metadata/index.d.ts.map +1 -1
  11. package/dist/discovery/metadata/index.js +10 -1
  12. package/dist/discovery/metadata/index.js.map +1 -1
  13. package/dist/discovery/metadata/versions/prune-service-maps.d.ts +7 -0
  14. package/dist/discovery/metadata/versions/prune-service-maps.d.ts.map +1 -0
  15. package/dist/discovery/metadata/versions/prune-service-maps.js +17 -0
  16. package/dist/discovery/metadata/versions/prune-service-maps.js.map +1 -0
  17. package/dist/discovery/metadata/versions/v10.d.ts.map +1 -1
  18. package/dist/discovery/metadata/versions/v10.js +3 -1
  19. package/dist/discovery/metadata/versions/v10.js.map +1 -1
  20. package/dist/discovery/metadata/versions/v11.d.ts.map +1 -1
  21. package/dist/discovery/metadata/versions/v11.js +2 -1
  22. package/dist/discovery/metadata/versions/v11.js.map +1 -1
  23. package/dist/discovery/metadata/versions/v12.d.ts.map +1 -1
  24. package/dist/discovery/metadata/versions/v12.js +4 -10
  25. package/dist/discovery/metadata/versions/v12.js.map +1 -1
  26. package/dist/discovery/metadata/versions/v13.d.ts.map +1 -1
  27. package/dist/discovery/metadata/versions/v13.js +2 -1
  28. package/dist/discovery/metadata/versions/v13.js.map +1 -1
  29. package/dist/discovery/metadata/versions/v14.d.ts.map +1 -1
  30. package/dist/discovery/metadata/versions/v14.js +2 -1
  31. package/dist/discovery/metadata/versions/v14.js.map +1 -1
  32. package/dist/discovery/metadata/versions/v15.d.ts +9 -0
  33. package/dist/discovery/metadata/versions/v15.d.ts.map +1 -0
  34. package/dist/discovery/metadata/versions/v15.js +24 -0
  35. package/dist/discovery/metadata/versions/v15.js.map +1 -0
  36. package/dist/discovery/metadata/vocabulary.d.ts +35 -0
  37. package/dist/discovery/metadata/vocabulary.d.ts.map +1 -0
  38. package/dist/discovery/metadata/vocabulary.js +112 -0
  39. package/dist/discovery/metadata/vocabulary.js.map +1 -0
  40. package/dist/discovery/metadata-codec.d.ts +1 -1
  41. package/dist/discovery/metadata-codec.d.ts.map +1 -1
  42. package/dist/discovery/metadata-codec.js +1 -1
  43. package/dist/discovery/metadata-codec.js.map +1 -1
  44. package/dist/discovery/metadata-validator.d.ts.map +1 -1
  45. package/dist/discovery/metadata-validator.js +40 -1
  46. package/dist/discovery/metadata-validator.js.map +1 -1
  47. package/dist/discovery/peer-metadata.d.ts +1 -1
  48. package/dist/discovery/peer-metadata.d.ts.map +1 -1
  49. package/dist/discovery/peer-metadata.js +1 -1
  50. package/dist/discovery/peer-metadata.js.map +1 -1
  51. package/dist/discovery/service-catalog.d.ts +16 -5
  52. package/dist/discovery/service-catalog.d.ts.map +1 -1
  53. package/dist/discovery/service-catalog.js +45 -12
  54. package/dist/discovery/service-catalog.js.map +1 -1
  55. package/dist/health/model-health-checker.d.ts.map +1 -1
  56. package/dist/health/model-health-checker.js +3 -2
  57. package/dist/health/model-health-checker.js.map +1 -1
  58. package/dist/index.d.ts +5 -4
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +5 -4
  61. package/dist/index.js.map +1 -1
  62. package/dist/node.d.ts +30 -0
  63. package/dist/node.d.ts.map +1 -1
  64. package/dist/node.js +122 -0
  65. package/dist/node.js.map +1 -1
  66. package/dist/payments/channel-store.d.ts +1 -0
  67. package/dist/payments/channel-store.d.ts.map +1 -1
  68. package/dist/payments/channel-store.js +14 -3
  69. package/dist/payments/channel-store.js.map +1 -1
  70. package/dist/payments/evm/multicall.d.ts +7 -0
  71. package/dist/payments/evm/multicall.d.ts.map +1 -1
  72. package/dist/payments/evm/multicall.js +28 -0
  73. package/dist/payments/evm/multicall.js.map +1 -1
  74. package/dist/payments/evm/trust-signals-client.d.ts +2 -4
  75. package/dist/payments/evm/trust-signals-client.d.ts.map +1 -1
  76. package/dist/payments/evm/trust-signals-client.js +4 -21
  77. package/dist/payments/evm/trust-signals-client.js.map +1 -1
  78. package/dist/payments/evm/verification-signals-client.d.ts +40 -0
  79. package/dist/payments/evm/verification-signals-client.d.ts.map +1 -0
  80. package/dist/payments/evm/verification-signals-client.js +93 -0
  81. package/dist/payments/evm/verification-signals-client.js.map +1 -0
  82. package/dist/payments/evm/verifier-client.d.ts +29 -3
  83. package/dist/payments/evm/verifier-client.d.ts.map +1 -1
  84. package/dist/payments/evm/verifier-client.js +52 -4
  85. package/dist/payments/evm/verifier-client.js.map +1 -1
  86. package/dist/payments/generated-contract-addresses.d.ts +2 -2
  87. package/dist/payments/generated-contract-addresses.js +2 -2
  88. package/dist/payments/index.d.ts +2 -2
  89. package/dist/payments/index.d.ts.map +1 -1
  90. package/dist/payments/index.js +1 -1
  91. package/dist/payments/index.js.map +1 -1
  92. package/dist/payments/seller-payment-manager.d.ts +15 -0
  93. package/dist/payments/seller-payment-manager.d.ts.map +1 -1
  94. package/dist/payments/seller-payment-manager.js +61 -4
  95. package/dist/payments/seller-payment-manager.js.map +1 -1
  96. package/dist/reputation/index.d.ts +1 -1
  97. package/dist/reputation/index.d.ts.map +1 -1
  98. package/dist/reputation/index.js +1 -1
  99. package/dist/reputation/index.js.map +1 -1
  100. package/dist/reputation/model-reputation.d.ts +34 -3
  101. package/dist/reputation/model-reputation.d.ts.map +1 -1
  102. package/dist/reputation/model-reputation.js +50 -8
  103. package/dist/reputation/model-reputation.js.map +1 -1
  104. package/dist/requested-service.d.ts +15 -0
  105. package/dist/requested-service.d.ts.map +1 -0
  106. package/dist/requested-service.js +23 -0
  107. package/dist/requested-service.js.map +1 -0
  108. package/dist/routing/model-route-ranking.d.ts +2 -0
  109. package/dist/routing/model-route-ranking.d.ts.map +1 -1
  110. package/dist/routing/model-route-ranking.js +4 -0
  111. package/dist/routing/model-route-ranking.js.map +1 -1
  112. package/dist/seller-request-handler.d.ts.map +1 -1
  113. package/dist/seller-request-handler.js +13 -7
  114. package/dist/seller-request-handler.js.map +1 -1
  115. package/dist/storage/migrations/channels/007_add_input_characters.d.ts +4 -0
  116. package/dist/storage/migrations/channels/007_add_input_characters.d.ts.map +1 -0
  117. package/dist/storage/migrations/channels/007_add_input_characters.js +12 -0
  118. package/dist/storage/migrations/channels/007_add_input_characters.js.map +1 -0
  119. package/dist/storage/migrations/channels/index.d.ts.map +1 -1
  120. package/dist/storage/migrations/channels/index.js +2 -1
  121. package/dist/storage/migrations/channels/index.js.map +1 -1
  122. package/dist/types/peer.d.ts +8 -0
  123. package/dist/types/peer.d.ts.map +1 -1
  124. package/package.json +4 -4
@@ -0,0 +1,35 @@
1
+ import type { PeerMetadata, ServiceCapabilities } from "../peer-metadata.js";
2
+ /**
3
+ * The names a metadata version's documents may use. Buyers reject a whole
4
+ * peer whose metadata names a protocol, billing unit or capability option
5
+ * their version does not know, so a seller serving an older version leaves
6
+ * out every service that needs one (see {@link withinVocabulary}).
7
+ */
8
+ export interface MetadataVocabulary {
9
+ /** Service API protocols (`serviceApiProtocols`, unit billing model keys). */
10
+ readonly protocols: ReadonlySet<string>;
11
+ /** Unit billing units (`serviceUnitBillingModels` components). */
12
+ readonly units: ReadonlySet<string>;
13
+ /** Service capability options (`serviceCapabilities.<service>.<option>`). */
14
+ readonly capabilityOptions: ReadonlySet<keyof ServiceCapabilities>;
15
+ }
16
+ export interface MetadataVocabularyAdditions {
17
+ protocols?: readonly string[];
18
+ units?: readonly string[];
19
+ capabilityOptions?: readonly (keyof ServiceCapabilities)[];
20
+ }
21
+ /** What v10-v14 know: everything defined before speech. */
22
+ export declare const BASE_METADATA_VOCABULARY: MetadataVocabulary;
23
+ /** `base` plus the names a newer version adds. */
24
+ export declare function extendVocabulary(base: MetadataVocabulary, added: MetadataVocabularyAdditions): MetadataVocabulary;
25
+ /**
26
+ * `latest` restricted to what `vocabulary` can say. A service whose protocol
27
+ * or billing unit the version does not know is left out, with every
28
+ * per-service entry for it, and capability options the version does not know
29
+ * are dropped; the rest of the seller stays visible. A provider whose listed
30
+ * services are all left out is dropped, because an empty service list means
31
+ * "any service"; a wildcard provider (`services: []`) keeps its wildcard and
32
+ * loses only those entries.
33
+ */
34
+ export declare function withinVocabulary(latest: PeerMetadata, vocabulary: MetadataVocabulary): PeerMetadata;
35
+ //# sourceMappingURL=vocabulary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../../../src/discovery/metadata/vocabulary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAwB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAGnG;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,8EAA8E;IAC9E,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACxC,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,6EAA6E;IAC7E,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,mBAAmB,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,SAAS,CAAC,MAAM,mBAAmB,CAAC,EAAE,CAAC;CAC5D;AAED,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,EAAE,kBAwBtC,CAAC;AAEF,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,2BAA2B,GAAG,kBAAkB,CAMjH;AA8CD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,GAAG,YAAY,CAuBnG"}
@@ -0,0 +1,112 @@
1
+ import { pruneServiceMaps } from "./versions/prune-service-maps.js";
2
+ /** What v10-v14 know: everything defined before speech. */
3
+ export const BASE_METADATA_VOCABULARY = {
4
+ protocols: new Set([
5
+ "anthropic-messages",
6
+ "openai-chat-completions",
7
+ "openai-completions",
8
+ "openai-responses",
9
+ "openai-images",
10
+ "typesafe-systemone",
11
+ "venice-video",
12
+ "fal-video",
13
+ "irp-suggest",
14
+ ]),
15
+ units: new Set(["output_images", "completed_requests", "video_generations", "video_seconds"]),
16
+ capabilityOptions: new Set([
17
+ "video",
18
+ "contextWindow",
19
+ "maxOutputTokens",
20
+ "inputs",
21
+ "outputs",
22
+ "reasoning",
23
+ "toolUse",
24
+ "structuredOutput",
25
+ "supportedParameters",
26
+ ]),
27
+ };
28
+ /** `base` plus the names a newer version adds. */
29
+ export function extendVocabulary(base, added) {
30
+ return {
31
+ protocols: new Set([...base.protocols, ...(added.protocols ?? [])]),
32
+ units: new Set([...base.units, ...(added.units ?? [])]),
33
+ capabilityOptions: new Set([...base.capabilityOptions, ...(added.capabilityOptions ?? [])]),
34
+ };
35
+ }
36
+ /** Per-service maps that must not mention a service the document leaves out. */
37
+ const PER_SERVICE_KEYS = [
38
+ "servicePricing",
39
+ "serviceCategories",
40
+ "serviceApiProtocols",
41
+ "serviceUnitBillingModels",
42
+ "serviceCapabilities",
43
+ "serviceHealth",
44
+ "servicePerformance",
45
+ ];
46
+ /** Whether `service` needs a protocol or billing unit outside `vocabulary`. */
47
+ function needsUnknownName(provider, service, vocabulary) {
48
+ if (provider.serviceApiProtocols?.[service]?.some((protocol) => !vocabulary.protocols.has(protocol)))
49
+ return true;
50
+ for (const [protocol, model] of Object.entries(provider.serviceUnitBillingModels?.[service] ?? {})) {
51
+ if (!vocabulary.protocols.has(protocol))
52
+ return true;
53
+ if (model?.components.some((component) => !vocabulary.units.has(component.unit)))
54
+ return true;
55
+ }
56
+ return false;
57
+ }
58
+ /** Services a provider describes in any per-service map. */
59
+ function describedServices(provider) {
60
+ const services = new Set();
61
+ for (const key of PER_SERVICE_KEYS) {
62
+ for (const service of Object.keys(provider[key] ?? {}))
63
+ services.add(service);
64
+ }
65
+ return [...services];
66
+ }
67
+ function withinCapabilityOptions(capabilities, vocabulary) {
68
+ const out = {};
69
+ for (const [service, caps] of Object.entries(capabilities)) {
70
+ const kept = Object.fromEntries(Object.entries(caps).filter(([option]) => vocabulary.capabilityOptions.has(option)));
71
+ if (Object.keys(kept).length > 0)
72
+ out[service] = kept;
73
+ }
74
+ return out;
75
+ }
76
+ /**
77
+ * `latest` restricted to what `vocabulary` can say. A service whose protocol
78
+ * or billing unit the version does not know is left out, with every
79
+ * per-service entry for it, and capability options the version does not know
80
+ * are dropped; the rest of the seller stays visible. A provider whose listed
81
+ * services are all left out is dropped, because an empty service list means
82
+ * "any service"; a wildcard provider (`services: []`) keeps its wildcard and
83
+ * loses only those entries.
84
+ */
85
+ export function withinVocabulary(latest, vocabulary) {
86
+ const providers = [];
87
+ for (const provider of latest.providers) {
88
+ const wildcard = provider.services.length === 0;
89
+ const candidates = wildcard ? describedServices(provider) : provider.services;
90
+ const unknown = new Set(candidates.filter((service) => needsUnknownName(provider, service, vocabulary)));
91
+ const next = { ...provider };
92
+ if (unknown.size > 0) {
93
+ if (!wildcard) {
94
+ const services = provider.services.filter((service) => !unknown.has(service));
95
+ if (services.length === 0)
96
+ continue;
97
+ next.services = services;
98
+ }
99
+ pruneServiceMaps(next, provider, unknown, PER_SERVICE_KEYS);
100
+ }
101
+ if (next.serviceCapabilities) {
102
+ const capabilities = withinCapabilityOptions(next.serviceCapabilities, vocabulary);
103
+ if (Object.keys(capabilities).length > 0)
104
+ next.serviceCapabilities = capabilities;
105
+ else
106
+ delete next.serviceCapabilities;
107
+ }
108
+ providers.push(next);
109
+ }
110
+ return { ...latest, providers };
111
+ }
112
+ //# sourceMappingURL=vocabulary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../../src/discovery/metadata/vocabulary.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export { decodeMetadata, encodeMetadata, encodeMetadataForSigning, getMetadataCodec, negotiateMetadataVersion, SERVED_METADATA_VERSIONS, type MetadataVersionCodec, } from "./metadata/index.js";
1
+ export { decodeMetadata, encodeMetadata, encodeMetadataForSigning, getMetadataCodec, metadataVersionIntroducing, negotiateMetadataVersion, SERVED_METADATA_VERSIONS, type MetadataVersionCodec, type MetadataVocabulary, } from "./metadata/index.js";
2
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":"AAEA,OAAO,EACL,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,qBAAqB,CAAC"}
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,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  // The codec is split into shared field modules and one file per version
2
2
  // under ./metadata/; this module keeps the old import path working.
3
- export { decodeMetadata, encodeMetadata, encodeMetadataForSigning, getMetadataCodec, negotiateMetadataVersion, SERVED_METADATA_VERSIONS, } from "./metadata/index.js";
3
+ export { decodeMetadata, encodeMetadata, encodeMetadataForSigning, getMetadataCodec, metadataVersionIntroducing, negotiateMetadataVersion, SERVED_METADATA_VERSIONS, } from "./metadata/index.js";
4
4
  //# sourceMappingURL=metadata-codec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-codec.js","sourceRoot":"","sources":["../../src/discovery/metadata-codec.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,oEAAoE;AACpE,OAAO,EACL,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,wBAAwB,EACxB,wBAAwB,GAEzB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"metadata-codec.js","sourceRoot":"","sources":["../../src/discovery/metadata-codec.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,oEAAoE;AACpE,OAAO,EACL,cAAc,EACd,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,GAGzB,MAAM,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-validator.d.ts","sourceRoot":"","sources":["../../src/discovery/metadata-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQjF,eAAO,MAAM,iBAAiB,QAAa,CAAC;AAC5C,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,kCAAkC,KAAK,CAAC;AACrD,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,qCAAqC,IAAI,CAAC;AACvD,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,uCAAuC,IAAI,CAAC;AACzD,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AA+DhE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,EAAE,CA8qB1E"}
1
+ {"version":3,"file":"metadata-validator.d.ts","sourceRoot":"","sources":["../../src/discovery/metadata-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQjF,eAAO,MAAM,iBAAiB,QAAa,CAAC;AAC5C,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAC7C,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAChD,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,kCAAkC,KAAK,CAAC;AACrD,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,qCAAqC,IAAI,CAAC;AACvD,eAAO,MAAM,gCAAgC,IAAI,CAAC;AAClD,eAAO,MAAM,uCAAuC,IAAI,CAAC;AACzD,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AA+DhE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAwBD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,eAAe,EAAE,CAmsB1E"}
@@ -1,5 +1,5 @@
1
1
  import { isServiceHealthTime, MAX_SERVICE_HEALTH_TIME_MS, METADATA_VERSION, MIN_SUPPORTED_METADATA_VERSION, SERVICE_CAPABILITIES_METADATA_VERSION, SERVICE_HEALTH_METADATA_VERSION, SERVICE_HEALTH_REASONS, SERVICE_HEALTH_SOURCES, SERVICE_HEALTH_STATUSES, SERVICE_PERFORMANCE_METADATA_VERSION, SERVICE_UNIT_BILLING_METADATA_VERSION, WELL_KNOWN_SERVICE_API_PROTOCOLS, validateServiceCapabilityFields, parseServicePerformance } from "./peer-metadata.js";
2
- import { encodeMetadata } from "./metadata-codec.js";
2
+ import { encodeMetadata, getMetadataCodec, metadataVersionIntroducing } from "./metadata-codec.js";
3
3
  import { MAX_PUBLIC_ADDRESS_LENGTH, parsePublicAddress } from "./public-address.js";
4
4
  import { isUnitBilledProtocol, validateUnitBillingModelForProtocolV1, validateUnitBillingModelV1 } from "../billing/unit.js";
5
5
  // Metadata is fetched from an untrusted HTTP endpoint. Keep the signed binary
@@ -85,8 +85,27 @@ function isValidGithubRepository(value) {
85
85
  && value !== ".."
86
86
  && GITHUB_REPOSITORY_PATTERN.test(value);
87
87
  }
88
+ /**
89
+ * The version that introduced `name` when `vocabulary` (the document's own
90
+ * version's) does not know it yet; undefined when it does, or when no version
91
+ * knows it (other checks report unknown names).
92
+ */
93
+ function beyondVocabulary(vocabulary, kind, name) {
94
+ if (!vocabulary || vocabulary[kind].has(name))
95
+ return undefined;
96
+ return metadataVersionIntroducing(kind, name);
97
+ }
98
+ function vocabularyOf(version) {
99
+ try {
100
+ return getMetadataCodec(version).vocabulary;
101
+ }
102
+ catch {
103
+ return undefined;
104
+ }
105
+ }
88
106
  export function validateMetadata(metadata) {
89
107
  const errors = [];
108
+ const vocabulary = vocabularyOf(metadata.version);
90
109
  // version
91
110
  if (metadata.version < MIN_SUPPORTED_METADATA_VERSION || metadata.version > METADATA_VERSION) {
92
111
  errors.push({
@@ -517,6 +536,13 @@ export function validateMetadata(metadata) {
517
536
  message: "Service API protocol values must be unique per service",
518
537
  });
519
538
  }
539
+ const protocolTooNew = beyondVocabulary(vocabulary, "protocols", normalized);
540
+ if (protocolTooNew) {
541
+ errors.push({
542
+ field: `providers[${i}].serviceApiProtocols.${serviceName}[${j}]`,
543
+ message: `Service API protocol "${normalized}" requires metadata version ${protocolTooNew}`,
544
+ });
545
+ }
520
546
  deduped.add(normalized);
521
547
  }
522
548
  }
@@ -586,6 +612,13 @@ export function validateMetadata(metadata) {
586
612
  });
587
613
  }
588
614
  model.components.forEach((component, componentIndex) => {
615
+ const unitTooNew = beyondVocabulary(vocabulary, "units", component.unit);
616
+ if (unitTooNew) {
617
+ errors.push({
618
+ field: `providers[${i}].serviceUnitBillingModels.${serviceName}.${protocol}.components[${componentIndex}].unit`,
619
+ message: `Billing unit "${component.unit}" requires metadata version ${unitTooNew}`,
620
+ });
621
+ }
589
622
  const matchEntries = Object.entries(component.match ?? {});
590
623
  if (matchEntries.length > MAX_BILLING_MATCH_ENTRIES_PER_COMPONENT) {
591
624
  errors.push({
@@ -647,6 +680,12 @@ export function validateMetadata(metadata) {
647
680
  for (const message of validateServiceCapabilityFields(caps)) {
648
681
  errors.push({ field, message });
649
682
  }
683
+ for (const option of Object.keys(caps)) {
684
+ const optionTooNew = beyondVocabulary(vocabulary, "capabilityOptions", option);
685
+ if (optionTooNew) {
686
+ errors.push({ field, message: `Service capability "${option}" requires metadata version ${optionTooNew}` });
687
+ }
688
+ }
650
689
  }
651
690
  }
652
691
  if (p.serviceHealth !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-validator.js","sourceRoot":"","sources":["../../src/discovery/metadata-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadata-validator.js","sourceRoot":"","sources":["../../src/discovery/metadata-validator.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export * from '@antseed/protocol/peer-metadata';
2
- export { WELL_KNOWN_SERVICE_API_PROTOCOLS, NATIVE_VIDEO_PROTOCOLS, isNativeVideoProtocol, type ServiceApiProtocol, type NativeVideoProtocol } from '@antseed/protocol/service-api';
2
+ export { WELL_KNOWN_SERVICE_API_PROTOCOLS, NATIVE_VIDEO_PROTOCOLS, isNativeVideoProtocol, AUDIO_SPEECH_PROTOCOLS, isAudioSpeechProtocol, type ServiceApiProtocol, type NativeVideoProtocol, type AudioSpeechProtocol } from '@antseed/protocol/service-api';
3
3
  //# sourceMappingURL=peer-metadata.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"peer-metadata.d.ts","sourceRoot":"","sources":["../../src/discovery/peer-metadata.ts"],"names":[],"mappings":"AACA,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"peer-metadata.d.ts","sourceRoot":"","sources":["../../src/discovery/peer-metadata.ts"],"names":[],"mappings":"AACA,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1,4 +1,4 @@
1
1
  // Moved to @antseed/protocol; re-exported for compatibility.
2
2
  export * from '@antseed/protocol/peer-metadata';
3
- export { WELL_KNOWN_SERVICE_API_PROTOCOLS, NATIVE_VIDEO_PROTOCOLS, isNativeVideoProtocol } from '@antseed/protocol/service-api';
3
+ export { WELL_KNOWN_SERVICE_API_PROTOCOLS, NATIVE_VIDEO_PROTOCOLS, isNativeVideoProtocol, AUDIO_SPEECH_PROTOCOLS, isAudioSpeechProtocol } from '@antseed/protocol/service-api';
4
4
  //# sourceMappingURL=peer-metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"peer-metadata.js","sourceRoot":"","sources":["../../src/discovery/peer-metadata.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,qBAAqB,EAAqD,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"peer-metadata.js","sourceRoot":"","sources":["../../src/discovery/peer-metadata.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,iCAAiC,CAAC;AAChD,OAAO,EAAE,gCAAgC,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,qBAAqB,EAA+E,MAAM,+BAA+B,CAAC"}
@@ -1,7 +1,7 @@
1
- import { type NativeVideoProtocol } from '@antseed/protocol/service-api';
2
- import { type ServiceHealth, type ServicePerformance, type VideoOptions } from '@antseed/protocol/peer-metadata';
1
+ import { type AudioSpeechProtocol, type NativeVideoProtocol } from '@antseed/protocol/service-api';
2
+ import { type ServiceHealth, type ServicePerformance, type SpeechOptions, type VideoOptions } from '@antseed/protocol/peer-metadata';
3
3
  import type { ProviderServiceHealthMatrixEntry, ProviderServicePerformanceMatrixEntry } from '@antseed/protocol/peer-pricing';
4
- export type CatalogServiceProtocol = 'anthropic-messages' | 'openai-chat-completions' | 'openai-responses' | 'openai-images' | 'typesafe-systemone' | NativeVideoProtocol;
4
+ export type CatalogServiceProtocol = 'anthropic-messages' | 'openai-chat-completions' | 'openai-responses' | 'openai-images' | 'typesafe-systemone' | NativeVideoProtocol | AudioSpeechProtocol;
5
5
  export type CatalogServiceCapabilities = {
6
6
  contextWindow?: number;
7
7
  maxOutputTokens?: number;
@@ -12,6 +12,7 @@ export type CatalogServiceCapabilities = {
12
12
  structuredOutput?: boolean;
13
13
  supportedParameters?: string[];
14
14
  video?: VideoOptions;
15
+ speech?: SpeechOptions;
15
16
  };
16
17
  export type NetworkServiceCatalogPeer = {
17
18
  peerId: string;
@@ -62,8 +63,11 @@ export type NetworkServiceCatalogPeer = {
62
63
  defaultOutputUsdPerMillion?: number;
63
64
  defaultCachedInputUsdPerMillion?: number;
64
65
  };
65
- /** `decision`: System One models return typed answers, not text or images. */
66
- export type NetworkServiceOfferType = 'text' | 'image' | 'decision' | 'video';
66
+ /**
67
+ * `decision`: System One models return typed answers, not text or images.
68
+ * `speech`: text-to-speech models return an audio file.
69
+ */
70
+ export type NetworkServiceOfferType = 'text' | 'image' | 'decision' | 'video' | 'speech';
67
71
  export type NetworkServiceOffer = {
68
72
  unitBillingModels?: NonNullable<NetworkServiceCatalogPeer['providerServiceUnitBillingModels']>[string]['services'][string];
69
73
  advertisedVerifierIds?: string[];
@@ -97,6 +101,13 @@ export type BuildNetworkServiceOffersOptions = {
97
101
  export declare function inferServiceProtocol(provider: string): Exclude<CatalogServiceProtocol, 'openai-images'> | null;
98
102
  export declare function resolveServiceProtocol(protocols: string[], provider: string): CatalogServiceProtocol | null;
99
103
  export declare function buildNetworkServiceOffers(peers: NetworkServiceCatalogPeer[], options?: BuildNetworkServiceOffersOptions): NetworkServiceOffer[];
104
+ /**
105
+ * USD per input character a speech offer bills: speech billing matches
106
+ * components against `{ model: <service> }` and charges every one that
107
+ * applies, so their prices add up. 0 for a billing model with no components
108
+ * (free); null when the offer is not speech or publishes no character price.
109
+ */
110
+ export declare function speechOfferUsdPerCharacter(offer: NetworkServiceOffer): number | null;
100
111
  export declare function compareNetworkServiceOfferPrice(a: NetworkServiceOffer, b: NetworkServiceOffer): number;
101
112
  export declare function selectLowestPricedNetworkServiceOffer(offers: NetworkServiceOffer[]): NetworkServiceOffer | null;
102
113
  /** One cheapest advertised route per peer and canonical model, across providers and aliases. */
@@ -1 +1 @@
1
- {"version":3,"file":"service-catalog.d.ts","sourceRoot":"","sources":["../../src/discovery/service-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-catalog.d.ts","sourceRoot":"","sources":["../../src/discovery/service-catalog.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { CODING_ONLY_SUFFIX_RE, canonicalModelKey } from '../model-identity.js';
2
2
  import { parseVerifierCapabilities } from './verifier-capabilities.js';
3
- import { NATIVE_VIDEO_PROTOCOLS, isNativeVideoProtocol, isRoutingProtocol } from '@antseed/protocol/service-api';
3
+ import { AUDIO_SPEECH_PROTOCOLS, NATIVE_VIDEO_PROTOCOLS, isAudioSpeechProtocol, isNativeVideoProtocol, isRoutingProtocol } from '@antseed/protocol/service-api';
4
4
  import { isServiceHealthFailing, providerServiceHealthFor, providerServicePerformanceFor } from '@antseed/protocol/peer-metadata';
5
+ import { componentMatchesAttributes } from '@antseed/protocol/billing';
5
6
  const VALID_PROTOCOLS = new Set([
6
7
  'anthropic-messages',
7
8
  'openai-chat-completions',
@@ -9,6 +10,7 @@ const VALID_PROTOCOLS = new Set([
9
10
  'openai-images',
10
11
  'typesafe-systemone',
11
12
  ...NATIVE_VIDEO_PROTOCOLS,
13
+ ...AUDIO_SPEECH_PROTOCOLS,
12
14
  ]);
13
15
  export function inferServiceProtocol(provider) {
14
16
  if (provider === 'openai-responses')
@@ -90,6 +92,18 @@ function resolveImagePriceRange(peer, provider, serviceId) {
90
92
  ? { minImageUsdPerImage: Math.min(...prices), maxImageUsdPerImage: Math.max(...prices) }
91
93
  : {};
92
94
  }
95
+ /** What an offer is, by its protocol first and then, for image models served elsewhere, its outputs. */
96
+ function serviceOfferType(protocol, capabilities) {
97
+ if (isNativeVideoProtocol(protocol))
98
+ return 'video';
99
+ if (isAudioSpeechProtocol(protocol))
100
+ return 'speech';
101
+ if (protocol === 'typesafe-systemone')
102
+ return 'decision';
103
+ if (protocol === 'openai-images' || capabilities?.outputs?.includes('image'))
104
+ return 'image';
105
+ return 'text';
106
+ }
93
107
  export function buildNetworkServiceOffers(peers, options = {}) {
94
108
  const offers = [];
95
109
  for (const peer of peers) {
@@ -106,14 +120,9 @@ export function buildNetworkServiceOffers(peers, options = {}) {
106
120
  const capabilities = peer.providerServiceCapabilities?.[provider]?.services?.[serviceId];
107
121
  const categories = peer.providerServiceCategories?.[provider]?.services?.[serviceId];
108
122
  const protocol = resolveServiceProtocol(protocols, provider);
109
- const type = isNativeVideoProtocol(protocol)
110
- ? 'video'
111
- : protocol === 'typesafe-systemone'
112
- ? 'decision'
113
- : protocol === 'openai-images' || capabilities?.outputs?.includes('image')
114
- ? 'image'
115
- : 'text';
123
+ const type = serviceOfferType(protocol, capabilities);
116
124
  const pricing = resolvePricing(peer, provider, serviceId);
125
+ const unitPriced = type === 'video' || type === 'speech';
117
126
  offers.push({
118
127
  advertisedVerifierIds: parseVerifierCapabilities(peer.capabilities).supported,
119
128
  serviceId,
@@ -126,10 +135,10 @@ export function buildNetworkServiceOffers(peers, options = {}) {
126
135
  peerId: peer.peerId,
127
136
  ...(peer.displayName ? { displayName: peer.displayName } : {}),
128
137
  ...(peer.reputationScore !== undefined ? { reputationScore: peer.reputationScore } : {}),
129
- ...(type !== 'video' && pricing.inputUsdPerMillion !== undefined ? { inputUsdPerMillion: pricing.inputUsdPerMillion } : {}),
130
- ...(type !== 'video' && pricing.outputUsdPerMillion !== undefined ? { outputUsdPerMillion: pricing.outputUsdPerMillion } : {}),
131
- ...(type !== 'video' && pricing.cachedInputUsdPerMillion !== undefined ? { cachedInputUsdPerMillion: pricing.cachedInputUsdPerMillion } : {}),
132
- ...(type === 'video' ? { unitBillingModels: peer.providerServiceUnitBillingModels?.[provider]?.services[serviceId] } : {}),
138
+ ...(!unitPriced && pricing.inputUsdPerMillion !== undefined ? { inputUsdPerMillion: pricing.inputUsdPerMillion } : {}),
139
+ ...(!unitPriced && pricing.outputUsdPerMillion !== undefined ? { outputUsdPerMillion: pricing.outputUsdPerMillion } : {}),
140
+ ...(!unitPriced && pricing.cachedInputUsdPerMillion !== undefined ? { cachedInputUsdPerMillion: pricing.cachedInputUsdPerMillion } : {}),
141
+ ...(unitPriced ? { unitBillingModels: peer.providerServiceUnitBillingModels?.[provider]?.services[serviceId] } : {}),
133
142
  ...resolveImagePriceRange(peer, provider, serviceId),
134
143
  ...(health ? { health } : {}),
135
144
  ...(performance ? { performance } : {}),
@@ -139,9 +148,33 @@ export function buildNetworkServiceOffers(peers, options = {}) {
139
148
  }
140
149
  return offers;
141
150
  }
151
+ /**
152
+ * USD per input character a speech offer bills: speech billing matches
153
+ * components against `{ model: <service> }` and charges every one that
154
+ * applies, so their prices add up. 0 for a billing model with no components
155
+ * (free); null when the offer is not speech or publishes no character price.
156
+ */
157
+ export function speechOfferUsdPerCharacter(offer) {
158
+ if (offer.type !== 'speech')
159
+ return null;
160
+ const model = offer.protocol ? offer.unitBillingModels?.[offer.protocol] : undefined;
161
+ // A billing model with no components charges nothing: the offer is free.
162
+ if (model && model.components.length === 0)
163
+ return 0;
164
+ const attributes = { model: offer.serviceId };
165
+ const applicable = (model?.components ?? []).filter((component) => component.unit === 'input_characters'
166
+ && componentMatchesAttributes(component, attributes)
167
+ && Number.isFinite(component.priceUsd)
168
+ && component.priceUsd >= 0);
169
+ return applicable.length > 0
170
+ ? applicable.reduce((sum, component) => sum + component.priceUsd, 0)
171
+ : null;
172
+ }
142
173
  function comparableOfferPrice(offer) {
143
174
  if (offer.type === 'image')
144
175
  return offer.minImageUsdPerImage ?? Number.POSITIVE_INFINITY;
176
+ if (offer.type === 'speech')
177
+ return speechOfferUsdPerCharacter(offer) ?? Number.POSITIVE_INFINITY;
145
178
  if (offer.inputUsdPerMillion === undefined || offer.outputUsdPerMillion === undefined) {
146
179
  return Number.POSITIVE_INFINITY;
147
180
  }