@adcp/sdk 9.2.2 → 9.4.0

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 (49) hide show
  1. package/README.md +23 -0
  2. package/dist/lib/discovery/inline-publisher-properties.js +10 -3
  3. package/dist/lib/discovery/inline-publisher-properties.js.map +1 -1
  4. package/dist/lib/discovery/resolve-agent-properties.d.ts +39 -11
  5. package/dist/lib/discovery/resolve-agent-properties.d.ts.map +1 -1
  6. package/dist/lib/discovery/resolve-agent-properties.js +136 -16
  7. package/dist/lib/discovery/resolve-agent-properties.js.map +1 -1
  8. package/dist/lib/discovery/types.d.ts +9 -2
  9. package/dist/lib/discovery/types.d.ts.map +1 -1
  10. package/dist/lib/discovery/validate-adagents.d.ts +2 -0
  11. package/dist/lib/discovery/validate-adagents.d.ts.map +1 -1
  12. package/dist/lib/discovery/validate-adagents.js +14 -6
  13. package/dist/lib/discovery/validate-adagents.js.map +1 -1
  14. package/dist/lib/index.d.ts +4 -3
  15. package/dist/lib/index.d.ts.map +1 -1
  16. package/dist/lib/index.js +24 -12
  17. package/dist/lib/index.js.map +1 -1
  18. package/dist/lib/registry/feed-stream.d.ts +147 -0
  19. package/dist/lib/registry/feed-stream.d.ts.map +1 -0
  20. package/dist/lib/registry/feed-stream.js +378 -0
  21. package/dist/lib/registry/feed-stream.js.map +1 -0
  22. package/dist/lib/registry/index.d.ts +52 -3
  23. package/dist/lib/registry/index.d.ts.map +1 -1
  24. package/dist/lib/registry/index.js +205 -2
  25. package/dist/lib/registry/index.js.map +1 -1
  26. package/dist/lib/registry/sync.d.ts +175 -10
  27. package/dist/lib/registry/sync.d.ts.map +1 -1
  28. package/dist/lib/registry/sync.js +601 -43
  29. package/dist/lib/registry/sync.js.map +1 -1
  30. package/dist/lib/registry/types.d.ts +38 -2
  31. package/dist/lib/registry/types.d.ts.map +1 -1
  32. package/dist/lib/registry/types.generated.d.ts +231 -8
  33. package/dist/lib/registry/types.generated.d.ts.map +1 -1
  34. package/dist/lib/registry/types.generated.js +1 -1
  35. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  36. package/dist/lib/signing/agent-fetch.d.ts +5 -4
  37. package/dist/lib/signing/agent-fetch.d.ts.map +1 -1
  38. package/dist/lib/signing/agent-fetch.js +31 -4
  39. package/dist/lib/signing/agent-fetch.js.map +1 -1
  40. package/dist/lib/signing/verifier.d.ts.map +1 -1
  41. package/dist/lib/signing/verifier.js +10 -37
  42. package/dist/lib/signing/verifier.js.map +1 -1
  43. package/dist/lib/signing/webhook-auth-detection.d.ts +10 -0
  44. package/dist/lib/signing/webhook-auth-detection.d.ts.map +1 -0
  45. package/dist/lib/signing/webhook-auth-detection.js +37 -0
  46. package/dist/lib/signing/webhook-auth-detection.js.map +1 -0
  47. package/dist/lib/version.d.ts +3 -3
  48. package/dist/lib/version.js +3 -3
  49. package/package.json +1 -1
package/README.md CHANGED
@@ -650,6 +650,29 @@ Build a registry service that:
650
650
 
651
651
  Library provides discovery logic - you add persistence layer.
652
652
 
653
+ ### Brand Hierarchy Resolution
654
+
655
+ Use `RegistryClient.resolveBrandHierarchy()` when rules need the ordered corporate chain for a brand domain. The chain is ordered from the resolved brand itself to the house brand, so nearest-ancestor matching can scan from left to right.
656
+
657
+ ```ts
658
+ import { RegistryClient, RegistrySync } from '@adcp/sdk';
659
+
660
+ const registry = new RegistryClient({ apiKey: process.env.ADCP_REGISTRY_API_KEY });
661
+
662
+ const brand = await registry.resolveBrandHierarchy('wpp-spain.com', { ttlMs: 60_000 });
663
+ const domains = brand?.chain.map(node => node.canonical_domain) ?? [];
664
+
665
+ const both = await registry.resolveBrandHierarchies(['wpp-spain.com', 'operator.example'], { ttlMs: 60_000 });
666
+
667
+ const sync = new RegistrySync({ client: registry });
668
+ await sync.start();
669
+ const ancestors = sync.getAncestors('wpp-spain.com'); // self -> parents -> house
670
+ ```
671
+
672
+ `ResolvedBrand.parent_brand` is a hierarchy reference, not a portable traversal API. New registry responses use the parent brand's canonical domain when known, but older rows may still carry a portfolio-internal `brand.json` id. Use the hierarchy APIs instead of N+1 walking `parent_brand`.
673
+
674
+ `RegistrySync` maintains its hierarchy index from registry feed events. On a cold start before a relevant hierarchy event has been applied, call `resolveBrandHierarchy()` for a one-off read and treat `getAncestors()` as the zero-latency mirror once the feed has populated that domain.
675
+
653
676
  ### Community Mirror `adagents.json` Catalogs
654
677
 
655
678
  Use `buildCommunityMirrorAdagents()` when publishing catalog-only AAO/community mirrors for platforms that have not adopted AdCP or published seller-authorized files yet. The helper emits `authorized_agents: []` and refuses caller-supplied authorization entries, so format and placement metadata cannot be mistaken for a seller authorization claim.
@@ -207,9 +207,16 @@ function revokedDomainSet(input) {
207
207
  if (!Array.isArray(input))
208
208
  return new Set();
209
209
  const out = new Set();
210
- for (const d of input) {
211
- if (typeof d === 'string' && d.length > 0)
212
- out.add(d.toLowerCase());
210
+ for (const item of input) {
211
+ const domain = typeof item === 'string'
212
+ ? item
213
+ : item &&
214
+ typeof item === 'object' &&
215
+ typeof item.publisher_domain === 'string'
216
+ ? item.publisher_domain
217
+ : undefined;
218
+ if (domain && domain.length > 0)
219
+ out.add(domain.toLowerCase());
213
220
  }
214
221
  return out;
215
222
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inline-publisher-properties.js","sourceRoot":"","sources":["../../../src/lib/discovery/inline-publisher-properties.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inline-publisher-properties.js","sourceRoot":"","sources":["../../../src/lib/discovery/inline-publisher-properties.ts"],"names":[],"mappings":"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"}
@@ -12,15 +12,17 @@
12
12
  * - `property_ids` → filter top-level `properties[]` by `property_id`
13
13
  * - `property_tags` → filter top-level `properties[]` by tag intersection
14
14
  * - `inline_properties` → return the agent entry's own `properties[]`
15
+ * - legacy bare inline (`properties[]` without `authorization_type`) →
16
+ * return the agent entry's own `properties[]`
15
17
  * - `publisher_properties` → cross-publisher; returned as `cross_publisher`
16
18
  * for the caller to resolve against other publishers' adagents.json
17
19
  * - `signal_ids` / `signal_tags` → signals agents; no property output
18
20
  *
19
- * Mirrors the Python SDK's `_resolve_agent_properties` (adcp-client-python).
20
- * Fails closed: entries without `authorization_type` or with a missing
21
- * selector return zero properties matching the Python SDK and the
22
- * schema's strict-conformance position. The pre-fix TS behavior of
23
- * attributing every property to every listed agent is gone.
21
+ * Mirrors the Python SDK's `_resolve_agent_properties` for schema-less
22
+ * legacy bare-inline entries while keeping schema-declared files strict.
23
+ * Missing selectors and bare entries without their own inline `properties[]`
24
+ * return zero properties. The pre-fix TS behavior of attributing every
25
+ * top-level property to every listed agent is gone.
24
26
  */
25
27
  import type { AdAgentsJson, AuthorizedAgent, Property, PublisherPropertySelector, SinglePublisherPropertySelector } from './types';
26
28
  /**
@@ -58,6 +60,8 @@ export interface ResolvedAgentScope {
58
60
  export type ResolveUnresolvableReason =
59
61
  /** The agent URL is not listed in `authorized_agents[]` at all. */
60
62
  'agent_not_listed'
63
+ /** More than one entry matches the same canonical agent URL. */
64
+ | 'ambiguous_agent_url'
61
65
  /** Entry exists but has no `authorization_type` discriminator. */
62
66
  | 'missing_authorization_type'
63
67
  /** Entry has an `authorization_type` we do not recognize. */
@@ -87,8 +91,9 @@ export declare function canonicalizeAgentUrl(raw: string): string | null;
87
91
  /**
88
92
  * Resolve `agentUrl`'s authorization scope against an `adagents.json`
89
93
  * file. The lookup uses canonicalized URL comparison — two URLs
90
- * differing only in case, default port, percent-encoding of unreserved
91
- * chars, or fragment are the same agent.
94
+ * differing only in host case, default port, percent-encoding of
95
+ * unreserved chars, or fragment are the same agent. Scheme and trailing
96
+ * slash differences remain distinct.
92
97
  *
93
98
  * Returns `{ properties: [], cross_publisher: [], cross_publisher_expanded: [], unresolvable: '...' }`
94
99
  * (never throws) when the agent isn't listed, when its entry is
@@ -98,10 +103,15 @@ export declare function resolveAgentProperties(adAgents: AdAgentsJson, agentUrl:
98
103
  /**
99
104
  * Convenience: list every locally-resolvable (`agent_url` →
100
105
  * `Property[]`) pair from an `adagents.json` file. Agents listed with
101
- * `signal_ids` / `signal_tags` or with no `authorization_type` are
102
- * absent from the result. `publisher_properties` cross-references are
103
- * reported separately so the caller can resolve them against other
104
- * publishers' files.
106
+ * `signal_ids` / `signal_tags` or with no resolvable property selector are
107
+ * absent from the result. Legacy bare-inline entries with `properties[]`
108
+ * are included. `publisher_properties` cross-references are reported
109
+ * separately so the caller can resolve them against other publishers' files.
110
+ *
111
+ * The returned map is keyed by public canonical URL; if a file contains
112
+ * canonical-equivalent entries, the later entry wins in this non-authoritative
113
+ * inventory view. Use `resolveAgentProperties` for an authorization decision
114
+ * for a specific agent URL because it fails closed on ambiguous matches.
105
115
  */
106
116
  export declare function listAgentPropertyMap(adAgents: AdAgentsJson): {
107
117
  byAgent: Map<string, Property[]>;
@@ -121,4 +131,22 @@ export declare function listAgentPropertyMap(adAgents: AdAgentsJson): {
121
131
  expanded: SinglePublisherPropertySelector[];
122
132
  }>;
123
133
  };
134
+ /**
135
+ * Non-authoritative total local property helper for `adagents.json`.
136
+ *
137
+ * This concatenates each authorized agent's locally resolved property scope
138
+ * (`property_ids`, `property_tags`, `inline_properties`, legacy bare inline,
139
+ * and inline-resolved `publisher_properties`). It intentionally preserves
140
+ * duplicate property objects across multiple agents because it is a sum of
141
+ * per-agent scopes, not a unique publisher catalog.
142
+ *
143
+ * If no agent scope resolves to local properties, it falls back to the file's
144
+ * top-level `properties[]`. In both paths, properties whose
145
+ * `publisher_domain` is listed in `revoked_publisher_domains[]` are filtered
146
+ * out.
147
+ *
148
+ * Do not use this helper for authorization. It resolves each entry independently
149
+ * for inventory aggregation and does not fail closed on canonical URL ambiguity.
150
+ */
151
+ export declare function getAllProperties(adAgents: AdAgentsJson): Property[];
124
152
  //# sourceMappingURL=resolve-agent-properties.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-agent-properties.d.ts","sourceRoot":"","sources":["../../../src/lib/discovery/resolve-agent-properties.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAEf,QAAQ,EACR,yBAAyB,EACzB,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAGjB;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB;;;;;OAKG;IACH,eAAe,EAAE,yBAAyB,EAAE,CAAC;IAC7C;;;;;;;OAOG;IACH,wBAAwB,EAAE,+BAA+B,EAAE,CAAC;IAC5D,iFAAiF;IACjF,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,gEAAgE;IAChE,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C;AAED,MAAM,MAAM,yBAAyB;AACnC,mEAAmE;AACjE,kBAAkB;AACpB,kEAAkE;GAChE,4BAA4B;AAC9B,6DAA6D;GAC3D,4BAA4B;AAC9B,yFAAyF;GACvF,kBAAkB;AACpB,4FAA4F;GAC1F,UAAU;AACZ,mFAAmF;GACjF,cAAc,CAAC;AAEnB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAyInG;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG;IAC5D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjC,UAAU,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,yBAAyB,CAAA;KAAE,CAAC,CAAC;IAC5E;;;;;OAKG;IACH,eAAe,EAAE,KAAK,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,yBAAyB,EAAE,CAAC;QACvC,QAAQ,EAAE,+BAA+B,EAAE,CAAC;KAC7C,CAAC,CAAC;CACJ,CA+BA"}
1
+ {"version":3,"file":"resolve-agent-properties.d.ts","sourceRoot":"","sources":["../../../src/lib/discovery/resolve-agent-properties.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EAEf,QAAQ,EACR,yBAAyB,EACzB,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAGjB;;;;;;;GAOG;AACH,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB;;;;;OAKG;IACH,eAAe,EAAE,yBAAyB,EAAE,CAAC;IAC7C;;;;;;;OAOG;IACH,wBAAwB,EAAE,+BAA+B,EAAE,CAAC;IAC5D,iFAAiF;IACjF,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,gEAAgE;IAChE,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C;AAED,MAAM,MAAM,yBAAyB;AACnC,mEAAmE;AACjE,kBAAkB;AACpB,gEAAgE;GAC9D,qBAAqB;AACvB,kEAAkE;GAChE,4BAA4B;AAC9B,6DAA6D;GAC3D,4BAA4B;AAC9B,yFAAyF;GACvF,kBAAkB;AACpB,4FAA4F;GAC1F,UAAU;AACZ,mFAAmF;GACjF,cAAc,CAAC;AAEnB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS/D;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAsBnG;AA+ID;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG;IAC5D,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACjC,UAAU,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,yBAAyB,CAAA;KAAE,CAAC,CAAC;IAC5E;;;;;OAKG;IACH,eAAe,EAAE,KAAK,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,yBAAyB,EAAE,CAAC;QACvC,QAAQ,EAAE,+BAA+B,EAAE,CAAC;KAC7C,CAAC,CAAC;CACJ,CA+BA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,YAAY,GAAG,QAAQ,EAAE,CASnE"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.canonicalizeAgentUrl = canonicalizeAgentUrl;
4
4
  exports.resolveAgentProperties = resolveAgentProperties;
5
5
  exports.listAgentPropertyMap = listAgentPropertyMap;
6
+ exports.getAllProperties = getAllProperties;
6
7
  const inline_publisher_properties_1 = require("./inline-publisher-properties");
7
8
  /**
8
9
  * Canonicalize an agent URL for `authorized_agents[].url` comparison per
@@ -20,6 +21,17 @@ const inline_publisher_properties_1 = require("./inline-publisher-properties");
20
21
  * resolver — e.g., TMP `seller_agent_url` validation.
21
22
  */
22
23
  function canonicalizeAgentUrl(raw) {
24
+ const parsed = parseAgentUrl(raw);
25
+ if (!parsed)
26
+ return null;
27
+ // `URL.host` already strips default ports and lowercases the hostname.
28
+ // Use `protocol + host` (NOT `origin`) so the assembled string keeps
29
+ // the IDN-A-label form Node produces.
30
+ const path = decodeUnreservedPercentEncoding(parsed.pathname);
31
+ const query = parsed.search ? decodeUnreservedPercentEncoding(parsed.search) : '';
32
+ return `${parsed.protocol}//${parsed.host}${path}${query}`;
33
+ }
34
+ function parseAgentUrl(raw) {
23
35
  if (typeof raw !== 'string' || raw.length === 0)
24
36
  return null;
25
37
  let parsed;
@@ -36,18 +48,14 @@ function canonicalizeAgentUrl(raw) {
36
48
  // in production, but we accept `http://` here so loopback fixtures parse.
37
49
  if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:')
38
50
  return null;
39
- // `URL.host` already strips default ports and lowercases the hostname.
40
- // Use `protocol + host` (NOT `origin`) so the assembled string keeps
41
- // the IDN-A-label form Node produces.
42
- const path = decodeUnreservedPercentEncoding(parsed.pathname);
43
- const query = parsed.search ? decodeUnreservedPercentEncoding(parsed.search) : '';
44
- return `${parsed.protocol}//${parsed.host}${path}${query}`;
51
+ return parsed;
45
52
  }
46
53
  /**
47
54
  * Resolve `agentUrl`'s authorization scope against an `adagents.json`
48
55
  * file. The lookup uses canonicalized URL comparison — two URLs
49
- * differing only in case, default port, percent-encoding of unreserved
50
- * chars, or fragment are the same agent.
56
+ * differing only in host case, default port, percent-encoding of
57
+ * unreserved chars, or fragment are the same agent. Scheme and trailing
58
+ * slash differences remain distinct.
51
59
  *
52
60
  * Returns `{ properties: [], cross_publisher: [], cross_publisher_expanded: [], unresolvable: '...' }`
53
61
  * (never throws) when the agent isn't listed, when its entry is
@@ -59,17 +67,37 @@ function resolveAgentProperties(adAgents, agentUrl) {
59
67
  return { properties: [], cross_publisher: [], cross_publisher_expanded: [], unresolvable: 'agent_not_listed' };
60
68
  }
61
69
  const entries = Array.isArray(adAgents.authorized_agents) ? adAgents.authorized_agents : [];
62
- const entry = entries.find(e => {
70
+ const matches = entries.filter(e => {
63
71
  if (!e || typeof e.url !== 'string')
64
72
  return false;
65
73
  const canon = canonicalizeAgentUrl(e.url);
66
74
  return canon !== null && canon === wanted;
67
75
  });
76
+ if (matches.length > 1) {
77
+ return { properties: [], cross_publisher: [], cross_publisher_expanded: [], unresolvable: 'ambiguous_agent_url' };
78
+ }
79
+ const entry = matches[0];
68
80
  if (!entry) {
69
81
  return { properties: [], cross_publisher: [], cross_publisher_expanded: [], unresolvable: 'agent_not_listed' };
70
82
  }
83
+ return resolveMatchedAgentProperties(adAgents, entry);
84
+ }
85
+ function resolveMatchedAgentProperties(adAgents, entry) {
86
+ const allProperties = filterRevokedProperties(adAgents.properties, adAgents.revoked_publisher_domains);
71
87
  const authType = entry.authorization_type;
72
88
  if (!authType) {
89
+ // Python SDK compatibility: legacy files sometimes omit the discriminator
90
+ // while carrying inline `properties[]` on the agent entry.
91
+ if (allowsLegacyBareInline(adAgents) && Array.isArray(entry.properties) && entry.properties.length > 0) {
92
+ const inline = filterRevokedProperties(entry.properties, adAgents.revoked_publisher_domains);
93
+ return {
94
+ properties: inline,
95
+ cross_publisher: [],
96
+ cross_publisher_expanded: [],
97
+ matched_entry: entry,
98
+ ...(inline.length === 0 ? { unresolvable: 'no_match' } : {}),
99
+ };
100
+ }
73
101
  return {
74
102
  properties: [],
75
103
  cross_publisher: [],
@@ -78,7 +106,6 @@ function resolveAgentProperties(adAgents, agentUrl) {
78
106
  unresolvable: 'missing_authorization_type',
79
107
  };
80
108
  }
81
- const allProperties = Array.isArray(adAgents.properties) ? adAgents.properties : [];
82
109
  switch (authType) {
83
110
  case 'property_ids': {
84
111
  const ids = entry.property_ids;
@@ -133,7 +160,14 @@ function resolveAgentProperties(adAgents, agentUrl) {
133
160
  unresolvable: 'missing_selector',
134
161
  };
135
162
  }
136
- return { properties: inline, cross_publisher: [], cross_publisher_expanded: [], matched_entry: entry };
163
+ const matched = filterRevokedProperties(inline, adAgents.revoked_publisher_domains);
164
+ return {
165
+ properties: matched,
166
+ cross_publisher: [],
167
+ cross_publisher_expanded: [],
168
+ matched_entry: entry,
169
+ ...(matched.length === 0 ? { unresolvable: 'no_match' } : {}),
170
+ };
137
171
  }
138
172
  case 'publisher_properties': {
139
173
  const selectors = entry.publisher_properties;
@@ -185,10 +219,15 @@ function resolveAgentProperties(adAgents, agentUrl) {
185
219
  /**
186
220
  * Convenience: list every locally-resolvable (`agent_url` →
187
221
  * `Property[]`) pair from an `adagents.json` file. Agents listed with
188
- * `signal_ids` / `signal_tags` or with no `authorization_type` are
189
- * absent from the result. `publisher_properties` cross-references are
190
- * reported separately so the caller can resolve them against other
191
- * publishers' files.
222
+ * `signal_ids` / `signal_tags` or with no resolvable property selector are
223
+ * absent from the result. Legacy bare-inline entries with `properties[]`
224
+ * are included. `publisher_properties` cross-references are reported
225
+ * separately so the caller can resolve them against other publishers' files.
226
+ *
227
+ * The returned map is keyed by public canonical URL; if a file contains
228
+ * canonical-equivalent entries, the later entry wins in this non-authoritative
229
+ * inventory view. Use `resolveAgentProperties` for an authorization decision
230
+ * for a specific agent URL because it fails closed on ambiguous matches.
192
231
  */
193
232
  function listAgentPropertyMap(adAgents) {
194
233
  const byAgent = new Map();
@@ -198,7 +237,7 @@ function listAgentPropertyMap(adAgents) {
198
237
  for (const entry of entries) {
199
238
  if (!entry || typeof entry.url !== 'string')
200
239
  continue;
201
- const scope = resolveAgentProperties(adAgents, entry.url);
240
+ const scope = resolveMatchedAgentProperties(adAgents, entry);
202
241
  const canon = canonicalizeAgentUrl(entry.url);
203
242
  const key = canon ?? entry.url;
204
243
  if (scope.properties.length > 0) {
@@ -217,6 +256,35 @@ function listAgentPropertyMap(adAgents) {
217
256
  }
218
257
  return { byAgent, unresolved, cross_publisher };
219
258
  }
259
+ /**
260
+ * Non-authoritative total local property helper for `adagents.json`.
261
+ *
262
+ * This concatenates each authorized agent's locally resolved property scope
263
+ * (`property_ids`, `property_tags`, `inline_properties`, legacy bare inline,
264
+ * and inline-resolved `publisher_properties`). It intentionally preserves
265
+ * duplicate property objects across multiple agents because it is a sum of
266
+ * per-agent scopes, not a unique publisher catalog.
267
+ *
268
+ * If no agent scope resolves to local properties, it falls back to the file's
269
+ * top-level `properties[]`. In both paths, properties whose
270
+ * `publisher_domain` is listed in `revoked_publisher_domains[]` are filtered
271
+ * out.
272
+ *
273
+ * Do not use this helper for authorization. It resolves each entry independently
274
+ * for inventory aggregation and does not fail closed on canonical URL ambiguity.
275
+ */
276
+ function getAllProperties(adAgents) {
277
+ const out = [];
278
+ const entries = Array.isArray(adAgents.authorized_agents) ? adAgents.authorized_agents : [];
279
+ for (const entry of entries) {
280
+ if (!entry || typeof entry.url !== 'string')
281
+ continue;
282
+ const scope = resolveMatchedAgentProperties(adAgents, entry);
283
+ if (scope.properties.length > 0)
284
+ out.push(...scope.properties);
285
+ }
286
+ return out.length > 0 ? out : filterRevokedProperties(adAgents.properties, adAgents.revoked_publisher_domains);
287
+ }
220
288
  /**
221
289
  * RFC 3986 §6.2.2.2: decode percent-encoded triplets that map to
222
290
  * unreserved characters (`ALPHA / DIGIT / "-" / "." / "_" / "~"`).
@@ -239,4 +307,56 @@ function decodeUnreservedPercentEncoding(input) {
239
307
  return isUnreserved ? String.fromCharCode(code) : match.toUpperCase();
240
308
  });
241
309
  }
310
+ function filterRevokedProperties(properties, revokedDomainsInput) {
311
+ if (!Array.isArray(properties))
312
+ return [];
313
+ const revokedDomains = revokedDomainSet(revokedDomainsInput);
314
+ if (revokedDomains.size === 0)
315
+ return properties;
316
+ return properties.filter(p => {
317
+ const domains = propertyPublisherDomains(p);
318
+ if (domains.length === 0)
319
+ return true;
320
+ return domains.every(domain => !revokedDomains.has(domain.toLowerCase()));
321
+ });
322
+ }
323
+ function revokedDomainSet(input) {
324
+ if (!Array.isArray(input))
325
+ return new Set();
326
+ const out = new Set();
327
+ for (const item of input) {
328
+ // `revoked_at` and `reason` are metadata; presence in this list is the
329
+ // revocation signal.
330
+ const domain = typeof item === 'string'
331
+ ? item
332
+ : item &&
333
+ typeof item === 'object' &&
334
+ typeof item.publisher_domain === 'string'
335
+ ? item.publisher_domain
336
+ : undefined;
337
+ if (domain && domain.length > 0)
338
+ out.add(domain.toLowerCase());
339
+ }
340
+ return out;
341
+ }
342
+ function propertyPublisherDomains(property) {
343
+ const out = [];
344
+ if (typeof property.publisher_domain === 'string' && property.publisher_domain.length > 0) {
345
+ out.push(property.publisher_domain);
346
+ }
347
+ if (Array.isArray(property.identifiers)) {
348
+ for (const id of property.identifiers) {
349
+ if (id &&
350
+ (id.type === 'domain' || id.type === 'subdomain') &&
351
+ typeof id.value === 'string' &&
352
+ id.value.length > 0) {
353
+ out.push(id.value);
354
+ }
355
+ }
356
+ }
357
+ return out;
358
+ }
359
+ function allowsLegacyBareInline(adAgents) {
360
+ return typeof adAgents.$schema !== 'string' || adAgents.$schema.length === 0;
361
+ }
242
362
  //# sourceMappingURL=resolve-agent-properties.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-agent-properties.js","sourceRoot":"","sources":["../../../src/lib/discovery/resolve-agent-properties.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-agent-properties.js","sourceRoot":"","sources":["../../../src/lib/discovery/resolve-agent-properties.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,11 @@ export interface Property {
21
21
  tags?: string[];
22
22
  publisher_domain?: string;
23
23
  }
24
+ export type RevokedPublisherDomain = string | {
25
+ publisher_domain: string;
26
+ revoked_at?: string;
27
+ reason?: string;
28
+ };
24
29
  /**
25
30
  * Discriminator for the per-agent authorization scope on each
26
31
  * `authorized_agents[]` entry. Drives `resolveAgentProperties()` —
@@ -82,7 +87,9 @@ export type CompactPublisherPropertySelector = {
82
87
  * field — see the spec at `schemas/cache/3.0.11/adagents.json`. Files
83
88
  * in the wild sometimes omit them, so both fields are typed as optional
84
89
  * here. `resolveAgentProperties()` fails closed (returns no properties)
85
- * when the discriminator or its selector is missing.
90
+ * when the discriminator or its selector is missing, except for the legacy
91
+ * Python-compatible bare-inline shape where an entry omits
92
+ * `authorization_type` but carries inline `properties[]`.
86
93
  */
87
94
  export interface AuthorizedAgent {
88
95
  url: string;
@@ -188,7 +195,7 @@ export interface AdAgentsJson {
188
195
  * part 2) and the SDK's `property-crawler` for the consumer-side
189
196
  * cross-check.
190
197
  */
191
- revoked_publisher_domains?: string[];
198
+ revoked_publisher_domains?: RevokedPublisherDomain[];
192
199
  last_updated?: string;
193
200
  }
194
201
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/discovery/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/discovery/types.ts"],"names":[],"mappings":"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"}
@@ -77,6 +77,8 @@ export interface AdAgentsValidationResult {
77
77
  export interface ValidateAdAgentsOptions {
78
78
  /** Per-request timeout in ms (default 10_000). */
79
79
  timeoutMs?: number;
80
+ /** Maximum response body bytes for adagents.json and ads.txt fetches (default 256 KiB). */
81
+ maxBodyBytes?: number;
80
82
  /** Optional User-Agent suffix (validated via `validateUserAgent`). */
81
83
  userAgent?: string;
82
84
  /** Logger level (default `'warn'`). */
@@ -1 +1 @@
1
- {"version":3,"file":"validate-adagents.d.ts","sourceRoot":"","sources":["../../../src/lib/discovery/validate-adagents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAK9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,mFAAmF;AACnF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,wBAAwB,GAAG,uBAAuB,CAAC;AAE5F,MAAM,WAAW,wBAAwB;IACvC,yEAAyE;IACzE,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,gBAAgB,EAAE,eAAe,CAAC;IAClC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzD;AAYD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,wBAAwB,CAAC,CA+MnC;AAaD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA8BrE"}
1
+ {"version":3,"file":"validate-adagents.d.ts","sourceRoot":"","sources":["../../../src/lib/discovery/validate-adagents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAK9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,mFAAmF;AACnF,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,wBAAwB,GAAG,uBAAuB,CAAC;AAE5F,MAAM,WAAW,wBAAwB;IACvC,yEAAyE;IACzE,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;;OAMG;IACH,gBAAgB,EAAE,eAAe,CAAC;IAClC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACzD;AAYD;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,wBAAwB,CAAC,CAgNnC;AAqBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA8BrE"}
@@ -38,8 +38,8 @@ const ssrf_fetch_1 = require("../net/ssrf-fetch");
38
38
  const probe_policy_1 = require("../utils/probe-policy");
39
39
  const adagents_redirects_1 = require("./adagents-redirects");
40
40
  const DEFAULT_TIMEOUT_MS = 10_000;
41
- const MAX_ADAGENTS_BYTES = 256 * 1024;
42
- const MAX_ADS_TXT_BYTES = 256 * 1024;
41
+ const DEFAULT_MAX_BODY_BYTES = 256 * 1024;
42
+ const MAX_CONFIGURABLE_BODY_BYTES = 2 * 1024 * 1024;
43
43
  const FETCH_HEADERS = {
44
44
  Accept: 'application/json, text/plain, */*',
45
45
  'Accept-Language': 'en-US,en;q=0.9',
@@ -57,6 +57,7 @@ async function validateAdAgents(publisherDomain, options = {}) {
57
57
  (0, validate_user_agent_1.validateUserAgent)(options.userAgent);
58
58
  }
59
59
  const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
60
+ const maxBodyBytes = resolveMaxBodyBytes(options.maxBodyBytes);
60
61
  const logger = (0, logger_1.createLogger)({ level: options.logLevel ?? 'warn' }).child('validateAdAgents');
61
62
  const userAgentHeader = `adcp-validate-adagents/${version_1.LIBRARY_VERSION} (+https://adcontextprotocol.org)`;
62
63
  const fromHeader = options.userAgent
@@ -68,7 +69,7 @@ async function validateAdAgents(publisherDomain, options = {}) {
68
69
  // Step 1: try the publisher's canonical location.
69
70
  const direct = await fetchJsonOrStatus(publisherUrl, {
70
71
  timeoutMs,
71
- maxBodyBytes: MAX_ADAGENTS_BYTES,
72
+ maxBodyBytes,
72
73
  userAgentHeader,
73
74
  fromHeader,
74
75
  redirectPolicy: { mode: 'same-registrable-domain', originUrl: publisherUrl },
@@ -119,7 +120,7 @@ async function validateAdAgents(publisherDomain, options = {}) {
119
120
  }
120
121
  const followed = await fetchJsonOrStatus(target, {
121
122
  timeoutMs,
122
- maxBodyBytes: MAX_ADAGENTS_BYTES,
123
+ maxBodyBytes,
123
124
  userAgentHeader,
124
125
  fromHeader,
125
126
  redirectPolicy: { mode: 'none' },
@@ -176,7 +177,7 @@ async function validateAdAgents(publisherDomain, options = {}) {
176
177
  const adsTxtUrl = buildUrl(publisher, '/ads.txt');
177
178
  const adsTxt = await fetchTextOrStatus(adsTxtUrl, {
178
179
  timeoutMs,
179
- maxBodyBytes: MAX_ADS_TXT_BYTES,
180
+ maxBodyBytes,
180
181
  userAgentHeader,
181
182
  fromHeader,
182
183
  });
@@ -211,7 +212,7 @@ async function validateAdAgents(publisherDomain, options = {}) {
211
212
  const managerUrl = buildUrl(managerDomain, '/.well-known/adagents.json');
212
213
  const manager = await fetchJsonOrStatus(managerUrl, {
213
214
  timeoutMs,
214
- maxBodyBytes: MAX_ADAGENTS_BYTES,
215
+ maxBodyBytes,
215
216
  userAgentHeader,
216
217
  fromHeader,
217
218
  redirectPolicy: { mode: 'same-registrable-domain', originUrl: managerUrl },
@@ -257,6 +258,13 @@ function coerceAdAgentsObject(value) {
257
258
  return null;
258
259
  return value;
259
260
  }
261
+ function resolveMaxBodyBytes(maxBodyBytes) {
262
+ const value = maxBodyBytes ?? DEFAULT_MAX_BODY_BYTES;
263
+ if (!Number.isSafeInteger(value) || value <= 0 || value > MAX_CONFIGURABLE_BODY_BYTES) {
264
+ throw new Error(`maxBodyBytes must be an integer between 1 and ${MAX_CONFIGURABLE_BODY_BYTES}`);
265
+ }
266
+ return value;
267
+ }
260
268
  /**
261
269
  * Parse a MANAGERDOMAIN directive out of an ads.txt body. Returns the
262
270
  * lowercased host token (last-wins on duplicates) or `undefined` when