@adcp/sdk 13.0.0-rc.3 → 13.0.0-rc.5

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 (211) hide show
  1. package/README.md +18 -15
  2. package/bin/adcp.js +7 -1
  3. package/dist/lib/adapters/property-list-adapter.d.mts +5 -1
  4. package/dist/lib/adapters/property-list-adapter.d.ts +5 -1
  5. package/dist/lib/adapters/property-list-adapter.d.ts.map +1 -1
  6. package/dist/lib/adapters/property-list-adapter.js +7 -7
  7. package/dist/lib/adapters/property-list-adapter.js.map +1 -1
  8. package/dist/lib/adapters/property-list-adapter.mjs +7 -7
  9. package/dist/lib/adapters/property-list-adapter.mjs.map +1 -1
  10. package/dist/lib/auth/oauth/CLIFlowHandler.d.mts +10 -3
  11. package/dist/lib/auth/oauth/CLIFlowHandler.d.ts +10 -3
  12. package/dist/lib/auth/oauth/CLIFlowHandler.d.ts.map +1 -1
  13. package/dist/lib/auth/oauth/CLIFlowHandler.js +40 -4
  14. package/dist/lib/auth/oauth/CLIFlowHandler.js.map +1 -1
  15. package/dist/lib/auth/oauth/CLIFlowHandler.mjs +40 -4
  16. package/dist/lib/auth/oauth/CLIFlowHandler.mjs.map +1 -1
  17. package/dist/lib/auth/oauth/index.d.mts +1 -1
  18. package/dist/lib/auth/oauth/index.d.ts +1 -1
  19. package/dist/lib/auth/oauth/index.d.ts.map +1 -1
  20. package/dist/lib/auth/oauth/index.js +2 -0
  21. package/dist/lib/auth/oauth/index.js.map +1 -1
  22. package/dist/lib/auth/oauth/index.mjs +2 -0
  23. package/dist/lib/auth/oauth/index.mjs.map +1 -1
  24. package/dist/lib/auth/oauth/web-flow.d.mts +12 -0
  25. package/dist/lib/auth/oauth/web-flow.d.ts +12 -0
  26. package/dist/lib/auth/oauth/web-flow.d.ts.map +1 -1
  27. package/dist/lib/auth/oauth/web-flow.js +20 -2
  28. package/dist/lib/auth/oauth/web-flow.js.map +1 -1
  29. package/dist/lib/auth/oauth/web-flow.mjs +19 -2
  30. package/dist/lib/auth/oauth/web-flow.mjs.map +1 -1
  31. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  32. package/dist/lib/core/SingleAgentClient.d.mts +27 -1
  33. package/dist/lib/core/SingleAgentClient.d.ts +27 -1
  34. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  35. package/dist/lib/core/SingleAgentClient.js +46 -18
  36. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  37. package/dist/lib/core/SingleAgentClient.mjs +46 -18
  38. package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
  39. package/dist/lib/index.d.mts +1 -1
  40. package/dist/lib/index.d.ts +1 -1
  41. package/dist/lib/index.d.ts.map +1 -1
  42. package/dist/lib/index.js.map +1 -1
  43. package/dist/lib/index.mjs.map +1 -1
  44. package/dist/lib/net/address-guards.d.ts.map +1 -1
  45. package/dist/lib/net/address-guards.js +4 -0
  46. package/dist/lib/net/address-guards.js.map +1 -1
  47. package/dist/lib/net/address-guards.mjs +4 -0
  48. package/dist/lib/net/address-guards.mjs.map +1 -1
  49. package/dist/lib/protocols/a2a.js +2 -2
  50. package/dist/lib/protocols/a2a.js.map +1 -1
  51. package/dist/lib/protocols/a2a.mjs +2 -2
  52. package/dist/lib/protocols/a2a.mjs.map +1 -1
  53. package/dist/lib/protocols/index.d.ts.map +1 -1
  54. package/dist/lib/protocols/index.js +28 -7
  55. package/dist/lib/protocols/index.js.map +1 -1
  56. package/dist/lib/protocols/index.mjs +28 -7
  57. package/dist/lib/protocols/index.mjs.map +1 -1
  58. package/dist/lib/protocols/mcp-modern.d.ts.map +1 -1
  59. package/dist/lib/protocols/mcp-modern.js +24 -8
  60. package/dist/lib/protocols/mcp-modern.js.map +1 -1
  61. package/dist/lib/protocols/mcp-modern.mjs +24 -8
  62. package/dist/lib/protocols/mcp-modern.mjs.map +1 -1
  63. package/dist/lib/protocols/mcp-tasks.d.ts.map +1 -1
  64. package/dist/lib/protocols/mcp-tasks.js +2 -12
  65. package/dist/lib/protocols/mcp-tasks.js.map +1 -1
  66. package/dist/lib/protocols/mcp-tasks.mjs +2 -12
  67. package/dist/lib/protocols/mcp-tasks.mjs.map +1 -1
  68. package/dist/lib/protocols/mcp.js +2 -2
  69. package/dist/lib/protocols/mcp.js.map +1 -1
  70. package/dist/lib/protocols/mcp.mjs +2 -2
  71. package/dist/lib/protocols/mcp.mjs.map +1 -1
  72. package/dist/lib/registry/index.d.mts +5 -25
  73. package/dist/lib/registry/index.d.ts +5 -25
  74. package/dist/lib/registry/index.d.ts.map +1 -1
  75. package/dist/lib/registry/index.js +5 -130
  76. package/dist/lib/registry/index.js.map +1 -1
  77. package/dist/lib/registry/index.mjs +5 -130
  78. package/dist/lib/registry/index.mjs.map +1 -1
  79. package/dist/lib/registry/sync.d.mts +8 -2
  80. package/dist/lib/registry/sync.d.ts +8 -2
  81. package/dist/lib/registry/sync.d.ts.map +1 -1
  82. package/dist/lib/registry/sync.js +8 -2
  83. package/dist/lib/registry/sync.js.map +1 -1
  84. package/dist/lib/registry/sync.mjs +8 -2
  85. package/dist/lib/registry/sync.mjs.map +1 -1
  86. package/dist/lib/registry/types.d.mts +15 -29
  87. package/dist/lib/registry/types.d.ts +15 -29
  88. package/dist/lib/registry/types.d.ts.map +1 -1
  89. package/dist/lib/registry/types.generated.d.mts +567 -15
  90. package/dist/lib/registry/types.generated.d.ts +567 -15
  91. package/dist/lib/registry/types.generated.d.ts.map +1 -1
  92. package/dist/lib/registry/types.generated.js.map +1 -1
  93. package/dist/lib/registry/types.js.map +1 -1
  94. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  95. package/dist/lib/server/decisioning/account.d.mts +6 -4
  96. package/dist/lib/server/decisioning/account.d.ts +6 -4
  97. package/dist/lib/server/decisioning/account.d.ts.map +1 -1
  98. package/dist/lib/server/decisioning/account.js.map +1 -1
  99. package/dist/lib/server/decisioning/account.mjs.map +1 -1
  100. package/dist/lib/server/decisioning/manifest-helpers.d.mts +6 -5
  101. package/dist/lib/server/decisioning/manifest-helpers.d.ts +6 -5
  102. package/dist/lib/server/decisioning/manifest-helpers.d.ts.map +1 -1
  103. package/dist/lib/server/decisioning/manifest-helpers.js.map +1 -1
  104. package/dist/lib/server/decisioning/manifest-helpers.mjs.map +1 -1
  105. package/dist/lib/server/decisioning/runtime/from-platform.js +4 -2
  106. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  107. package/dist/lib/server/decisioning/runtime/from-platform.mjs +4 -2
  108. package/dist/lib/server/decisioning/runtime/from-platform.mjs.map +1 -1
  109. package/dist/lib/server/decisioning/tenant-store.d.mts +26 -14
  110. package/dist/lib/server/decisioning/tenant-store.d.ts +26 -14
  111. package/dist/lib/server/decisioning/tenant-store.d.ts.map +1 -1
  112. package/dist/lib/server/decisioning/tenant-store.js +6 -1
  113. package/dist/lib/server/decisioning/tenant-store.js.map +1 -1
  114. package/dist/lib/server/decisioning/tenant-store.mjs +6 -1
  115. package/dist/lib/server/decisioning/tenant-store.mjs.map +1 -1
  116. package/dist/lib/server/pin-and-bind-fetch.d.mts +2 -0
  117. package/dist/lib/server/pin-and-bind-fetch.d.ts +2 -0
  118. package/dist/lib/server/pin-and-bind-fetch.d.ts.map +1 -1
  119. package/dist/lib/server/pin-and-bind-fetch.js +2 -0
  120. package/dist/lib/server/pin-and-bind-fetch.js.map +1 -1
  121. package/dist/lib/server/pin-and-bind-fetch.mjs +2 -0
  122. package/dist/lib/server/pin-and-bind-fetch.mjs.map +1 -1
  123. package/dist/lib/server/structured-serialize.d.ts.map +1 -1
  124. package/dist/lib/server/structured-serialize.js +10 -2
  125. package/dist/lib/server/structured-serialize.js.map +1 -1
  126. package/dist/lib/server/structured-serialize.mjs +10 -2
  127. package/dist/lib/server/structured-serialize.mjs.map +1 -1
  128. package/dist/lib/server/webhook-emitter.d.ts.map +1 -1
  129. package/dist/lib/server/webhook-emitter.js +4 -2
  130. package/dist/lib/server/webhook-emitter.js.map +1 -1
  131. package/dist/lib/server/webhook-emitter.mjs +4 -2
  132. package/dist/lib/server/webhook-emitter.mjs.map +1 -1
  133. package/dist/lib/signing/middleware.d.mts +2 -1
  134. package/dist/lib/signing/middleware.d.ts +2 -1
  135. package/dist/lib/signing/middleware.d.ts.map +1 -1
  136. package/dist/lib/signing/middleware.js +26 -4
  137. package/dist/lib/signing/middleware.js.map +1 -1
  138. package/dist/lib/signing/middleware.mjs +26 -4
  139. package/dist/lib/signing/middleware.mjs.map +1 -1
  140. package/dist/lib/signing/webhook-verifier.d.ts.map +1 -1
  141. package/dist/lib/signing/webhook-verifier.js +4 -2
  142. package/dist/lib/signing/webhook-verifier.js.map +1 -1
  143. package/dist/lib/signing/webhook-verifier.mjs +4 -2
  144. package/dist/lib/signing/webhook-verifier.mjs.map +1 -1
  145. package/dist/lib/testing/agent-tester.d.ts.map +1 -1
  146. package/dist/lib/testing/agent-tester.js +46 -1
  147. package/dist/lib/testing/agent-tester.js.map +1 -1
  148. package/dist/lib/testing/agent-tester.mjs +46 -1
  149. package/dist/lib/testing/agent-tester.mjs.map +1 -1
  150. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  151. package/dist/lib/testing/storyboard/runner.js +40 -6
  152. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  153. package/dist/lib/testing/storyboard/runner.mjs +40 -6
  154. package/dist/lib/testing/storyboard/runner.mjs.map +1 -1
  155. package/dist/lib/types/asset-instances.d.mts +8 -6
  156. package/dist/lib/types/asset-instances.d.ts +8 -6
  157. package/dist/lib/types/asset-instances.d.ts.map +1 -1
  158. package/dist/lib/types/asset-instances.js.map +1 -1
  159. package/dist/lib/types/core.generated.d.mts +105 -58
  160. package/dist/lib/types/core.generated.d.ts +105 -58
  161. package/dist/lib/types/core.generated.d.ts.map +1 -1
  162. package/dist/lib/types/core.generated.js.map +1 -1
  163. package/dist/lib/types/index.d.ts.map +1 -1
  164. package/dist/lib/types/index.js.map +1 -1
  165. package/dist/lib/types/index.mjs.map +1 -1
  166. package/dist/lib/types/schemas.generated.d.mts +2352 -473
  167. package/dist/lib/types/schemas.generated.d.ts +2352 -473
  168. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  169. package/dist/lib/types/schemas.generated.js +78 -45
  170. package/dist/lib/types/schemas.generated.js.map +1 -1
  171. package/dist/lib/types/schemas.generated.mjs +71 -45
  172. package/dist/lib/types/schemas.generated.mjs.map +1 -1
  173. package/dist/lib/types/tools.generated.d.mts +48 -44
  174. package/dist/lib/types/tools.generated.d.ts +48 -44
  175. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  176. package/dist/lib/types/tools.generated.js.map +1 -1
  177. package/dist/lib/utils/probe-policy.d.mts +0 -16
  178. package/dist/lib/utils/probe-policy.d.ts +0 -16
  179. package/dist/lib/utils/probe-policy.d.ts.map +1 -1
  180. package/dist/lib/utils/probe-policy.js +15 -1
  181. package/dist/lib/utils/probe-policy.js.map +1 -1
  182. package/dist/lib/utils/probe-policy.mjs +15 -1
  183. package/dist/lib/utils/probe-policy.mjs.map +1 -1
  184. package/dist/lib/utils/redact-args.d.mts +36 -0
  185. package/dist/lib/utils/redact-args.d.ts +37 -0
  186. package/dist/lib/utils/redact-args.d.ts.map +1 -0
  187. package/dist/lib/utils/redact-args.js +46 -0
  188. package/dist/lib/utils/redact-args.js.map +1 -0
  189. package/dist/lib/utils/redact-args.mjs +22 -0
  190. package/dist/lib/utils/redact-args.mjs.map +1 -0
  191. package/dist/lib/v2/projection/creative-delivery.js +1 -5
  192. package/dist/lib/v2/projection/creative-delivery.js.map +1 -1
  193. package/dist/lib/v2/projection/creative-delivery.mjs +1 -5
  194. package/dist/lib/v2/projection/creative-delivery.mjs.map +1 -1
  195. package/dist/lib/validation/index.d.mts +15 -1
  196. package/dist/lib/validation/index.d.ts +15 -1
  197. package/dist/lib/validation/index.d.ts.map +1 -1
  198. package/dist/lib/validation/index.js +4 -8
  199. package/dist/lib/validation/index.js.map +1 -1
  200. package/dist/lib/validation/index.mjs +4 -8
  201. package/dist/lib/validation/index.mjs.map +1 -1
  202. package/dist/lib/version.d.mts +3 -3
  203. package/dist/lib/version.d.ts +3 -3
  204. package/dist/lib/version.js +3 -3
  205. package/dist/lib/version.js.map +1 -1
  206. package/dist/lib/version.mjs +3 -3
  207. package/dist/lib/version.mjs.map +1 -1
  208. package/examples/hello_seller_adapter_multi_tenant.ts +7 -0
  209. package/package.json +6 -5
  210. package/skills/build-holdco-agent/SKILL.md +19 -0
  211. package/skills/cross-cutting.md +3 -1
@@ -31,6 +31,8 @@ export interface paths {
31
31
  * @description Resolve a domain to its canonical brand identity. Follows brand.json redirects and returns the resolved brand with its house, architecture type, and optional manifest. The domain must be a bare DNS hostname.
32
32
  *
33
33
  * A domain is authoritative for its own identity, so `source` tells you who published the record and `relationship_trust` tells you whether a brand-to-house relationship was confirmed by both sides. Only `mutual` and `inline` are reciprocated; treat everything else as a claim.
34
+ * Record selection is deterministic: `hosted` > `brand_json` > `community` > `enriched`. `source` reports provenance only and must not be used as a substitute for `relationship_trust`.
35
+ * The v3 hierarchy is one level deep. There is no ordered-chain endpoint: third-party verifiers use the reciprocated `house_domain` edge returned here. `claimed_house_domain` is unilateral and never extends trust.
34
36
  *
35
37
  * **Rate limit:** 60 requests per minute per IP address.
36
38
  */
@@ -748,6 +750,86 @@ export interface paths {
748
750
  patch?: never;
749
751
  trace?: never;
750
752
  };
753
+ "/api/registry/mirror-proposals": {
754
+ parameters: {
755
+ query?: never;
756
+ header?: never;
757
+ path?: never;
758
+ cookie?: never;
759
+ };
760
+ /**
761
+ * List community mirror proposals
762
+ * @description List the caller's own community-mirror proposals. Registry moderators and AgenticAdvertising.org administrators see the review queue and may filter by status; their default is `pending`.
763
+ */
764
+ get: operations["listCommunityMirrorProposals"];
765
+ put?: never;
766
+ post?: never;
767
+ delete?: never;
768
+ options?: never;
769
+ head?: never;
770
+ patch?: never;
771
+ trace?: never;
772
+ };
773
+ "/api/registry/mirror-proposals/{id}": {
774
+ parameters: {
775
+ query?: never;
776
+ header?: never;
777
+ path?: never;
778
+ cookie?: never;
779
+ };
780
+ /**
781
+ * Get community mirror proposal
782
+ * @description Fetch a proposal owned by the caller. Registry moderators and AgenticAdvertising.org administrators may fetch any proposal.
783
+ */
784
+ get: operations["getCommunityMirrorProposal"];
785
+ put?: never;
786
+ post?: never;
787
+ delete?: never;
788
+ options?: never;
789
+ head?: never;
790
+ patch?: never;
791
+ trace?: never;
792
+ };
793
+ "/api/registry/mirror-proposals/{id}/approve": {
794
+ parameters: {
795
+ query?: never;
796
+ header?: never;
797
+ path?: never;
798
+ cookie?: never;
799
+ };
800
+ get?: never;
801
+ put?: never;
802
+ /**
803
+ * Approve community mirror proposal
804
+ * @description Approve and atomically publish a pending proposal. Requires a registry moderator or AgenticAdvertising.org administrator.
805
+ */
806
+ post: operations["approveCommunityMirrorProposal"];
807
+ delete?: never;
808
+ options?: never;
809
+ head?: never;
810
+ patch?: never;
811
+ trace?: never;
812
+ };
813
+ "/api/registry/mirror-proposals/{id}/reject": {
814
+ parameters: {
815
+ query?: never;
816
+ header?: never;
817
+ path?: never;
818
+ cookie?: never;
819
+ };
820
+ get?: never;
821
+ put?: never;
822
+ /**
823
+ * Reject community mirror proposal
824
+ * @description Reject a pending proposal with reviewer notes. Requires a registry moderator or AgenticAdvertising.org administrator.
825
+ */
826
+ post: operations["rejectCommunityMirrorProposal"];
827
+ delete?: never;
828
+ options?: never;
829
+ head?: never;
830
+ patch?: never;
831
+ trace?: never;
832
+ };
751
833
  "/api/registry/mirrors": {
752
834
  parameters: {
753
835
  query?: never;
@@ -781,8 +863,8 @@ export interface paths {
781
863
  */
782
864
  get: operations["getCommunityMirror"];
783
865
  /**
784
- * Publish community mirror
785
- * @description Publish or update a catalog-only adagents.json community mirror. Requires a registry moderator or AgenticAdvertising.org admin. The service validates the assembled document against adagents.json, forces `authorized_agents: []`, regenerates `$schema` and `last_updated`, and updates derived publisher-domain catalog rows.
866
+ * Publish or propose community mirror
867
+ * @description Submit a catalog-only adagents.json community mirror. Registry moderators and AgenticAdvertising.org administrators publish immediately; other authenticated organization callers create or refresh a pending proposal and receive HTTP 202. Contributor proposals are limited to 1 MiB and 2,000 catalog items. The service validates the assembled document against adagents.json, forces `authorized_agents: []`, and regenerates `$schema` and `last_updated`.
786
868
  */
787
869
  put: operations["publishCommunityMirror"];
788
870
  post?: never;
@@ -2110,21 +2192,29 @@ export interface components {
2110
2192
  keller_type?: "master" | "sub_brand" | "endorsed" | "independent";
2111
2193
  parent_brand?: string;
2112
2194
  house_domain?: string;
2113
- /** @description House the requested domain claims. One-sided until the named house names it back, so it never extends relationship trust on its own. */
2195
+ /** @description House the requested domain claims. This field never extends trust on its own; `relationship_trust` reports whether the reciprocal declaration is current enough to do so. */
2114
2196
  claimed_house_domain?: string;
2115
2197
  house_name?: string;
2116
2198
  /**
2117
- * @description How the brand-to-house relationship was established. `inline`: the house's own document defines the brand. `mutual`: both sides publish the relationship — the trust-extending edge. `leaf_only`: the brand claims a house that has not reciprocated. `house_only`: a house claims the brand, which has not reciprocated. `standalone`: the brand claims no house. `unverifiable`: a claimed house could not be checked.
2199
+ * @description How the brand-to-house relationship was established. `inline`: the house's own document defines the brand. `mutual`: both sides publish the relationship — the trust-extending edge. `leaf_only`: the brand claims a house whose reciprocal declaration is missing, not yet active, or too old to extend trust. `house_only`: a house claims the brand, which has not reciprocated. `standalone`: the brand claims no house. `unverifiable`: a claimed house could not be checked.
2118
2200
  * @enum {string}
2119
2201
  */
2120
2202
  relationship_trust?: "inline" | "mutual" | "leaf_only" | "house_only" | "standalone" | "unverifiable";
2121
2203
  /**
2204
+ * Format: date-time
2122
2205
  * @description When both sides of a mutual relationship were last seen agreeing. Present only for `mutual`, and it does not advance while the house side is unreachable, so callers can apply their own edge-aging policy.
2123
2206
  * @example 2026-07-28T12:00:00Z
2124
2207
  */
2125
2208
  relationship_verified_at?: string;
2209
+ /**
2210
+ * Format: date-time
2211
+ * @description When the house declared the relationship in `brand_refs[].effective_at`, or the resolver's durable first observation if the publisher omitted that field. Callers can apply a declaration-age ceiling independently of `relationship_verified_at`.
2212
+ * @example 2026-01-29T12:00:00Z
2213
+ */
2214
+ relationship_declared_at?: string;
2126
2215
  /** @description Set when a pre-v3 document was promoted to a canonical v3 document for this response. Identity only — legacy relationship data is preserved opaquely, never promoted to a trust claim. */
2127
2216
  promoted_from_schema?: string;
2217
+ /** @description Loss or ambiguity encountered while promoting a pre-v3 document. A `house` warning means the legacy house object was preserved only as opaque metadata and did not establish a trusted relationship. */
2128
2218
  migration_warnings?: {
2129
2219
  field: string;
2130
2220
  message: string;
@@ -2135,11 +2225,11 @@ export interface components {
2135
2225
  [key: string]: unknown;
2136
2226
  };
2137
2227
  /**
2138
- * @description Where the record came from. `brand_json`: the domain's own /.well-known/brand.json. `hosted`: registered by an owner whose control of the domain was verified. `community`: contributed by a member. `enriched`: third-party enrichment.
2228
+ * @description Provenance of the selected record, not relationship authorization. Deterministic precedence is `hosted` > `brand_json` > `community` > `enriched`; normal reads prefer the durable stored winner on a source tie, while `fresh=true` lets a successful live origin read win a tie. `brand_json`: the domain's own /.well-known/brand.json. `hosted`: registered by an owner whose control of the domain was verified. `community`: contributed by a member. `enriched`: third-party enrichment.
2139
2229
  * @enum {string}
2140
2230
  */
2141
2231
  source: "hosted" | "brand_json" | "community" | "enriched";
2142
- /** @description Live origin-validation diagnostics when fresh=true falls back to a stored registry record. */
2232
+ /** @description This request's origin-validation diagnostics when `fresh=true` falls back to a stored registry record. Presence means the response is stored evidence, not a successful live-origin read. */
2143
2233
  live_brand_json?: {
2144
2234
  valid: boolean;
2145
2235
  url: string;
@@ -2709,19 +2799,37 @@ export interface components {
2709
2799
  } & {
2710
2800
  [key: string]: unknown;
2711
2801
  };
2712
- CommunityMirrorListResponse: {
2713
- mirrors: components["schemas"]["CommunityMirrorSummary"][];
2802
+ CommunityMirrorProposalListResponse: {
2803
+ proposals: components["schemas"]["CommunityMirrorProposalSummary"][];
2714
2804
  total: number;
2715
2805
  };
2716
- CommunityMirrorSummary: {
2806
+ CommunityMirrorProposalSummary: {
2807
+ /**
2808
+ * Format: uuid
2809
+ * @description Opaque identifier for the proposal.
2810
+ * @example 4ec8bc86-6180-4d0e-aa72-9cbf402d3638
2811
+ */
2812
+ id: string;
2717
2813
  /**
2718
2814
  * @description Lowercase platform identifier, normalized by the service.
2719
2815
  * @example example_platform
2720
2816
  */
2721
2817
  platform: string;
2722
2818
  catalog_etag: string | null;
2723
- /** @description HTTPS successor document URL, when this mirror has been superseded. */
2819
+ /** @description HTTPS URL. */
2724
2820
  superseded_by: string | null;
2821
+ /** @description SHA-256 digest that reviewers must echo when approving or rejecting this exact revision. */
2822
+ proposal_digest: string;
2823
+ /** @description Digest of the public mirror state this proposal was reviewed against, or null when none existed. */
2824
+ base_mirror_digest: string | null;
2825
+ /** @enum {string} */
2826
+ status: "pending" | "approved" | "rejected";
2827
+ /** Format: date-time */
2828
+ proposed_at: string;
2829
+ /** Format: date-time */
2830
+ reviewed_at: string | null;
2831
+ /** Format: date-time */
2832
+ published_at: string | null;
2725
2833
  /** Format: date-time */
2726
2834
  updated_at: string;
2727
2835
  };
@@ -2731,16 +2839,44 @@ export interface components {
2731
2839
  /** @description Seconds to wait before retrying. */
2732
2840
  retryAfter?: number;
2733
2841
  };
2734
- CommunityMirrorGetResponse: {
2842
+ CommunityMirrorProposalGetResponse: {
2843
+ proposal: components["schemas"]["CommunityMirrorProposal"];
2844
+ };
2845
+ CommunityMirrorProposal: {
2846
+ /**
2847
+ * Format: uuid
2848
+ * @description Opaque identifier for the proposal.
2849
+ * @example 4ec8bc86-6180-4d0e-aa72-9cbf402d3638
2850
+ */
2851
+ id: string;
2735
2852
  /**
2736
2853
  * @description Lowercase platform identifier, normalized by the service.
2737
2854
  * @example example_platform
2738
2855
  */
2739
2856
  platform: string;
2857
+ adagents_json: components["schemas"]["CommunityMirrorAdagentsJson"];
2740
2858
  catalog_etag: string | null;
2741
- /** @description HTTPS successor document URL, when this mirror has been superseded. */
2859
+ /** @description HTTPS URL. */
2742
2860
  superseded_by: string | null;
2743
- adagents_json: components["schemas"]["CommunityMirrorAdagentsJson"];
2861
+ /** @description SHA-256 digest that reviewers must echo when approving or rejecting this exact revision. */
2862
+ proposal_digest: string;
2863
+ /** @description Digest of the public mirror state this proposal was reviewed against, or null when none existed. */
2864
+ base_mirror_digest: string | null;
2865
+ /** @enum {string} */
2866
+ status: "pending" | "approved" | "rejected";
2867
+ proposed_by_organization_id: string | null;
2868
+ /**
2869
+ * Format: email
2870
+ * @description Contributor email, returned only to registry moderators and AgenticAdvertising.org administrators.
2871
+ */
2872
+ proposed_by_email?: string | null;
2873
+ /** Format: date-time */
2874
+ proposed_at: string;
2875
+ /** Format: date-time */
2876
+ reviewed_at: string | null;
2877
+ review_notes: string | null;
2878
+ /** Format: date-time */
2879
+ published_at: string | null;
2744
2880
  /** Format: date-time */
2745
2881
  created_at: string;
2746
2882
  /** Format: date-time */
@@ -2781,6 +2917,14 @@ export interface components {
2781
2917
  } & {
2782
2918
  [key: string]: unknown;
2783
2919
  };
2920
+ CommunityMirrorProposalApprovalResponse: components["schemas"]["CommunityMirrorPublishResponse"] & {
2921
+ /**
2922
+ * Format: uuid
2923
+ * @description Opaque identifier for the proposal.
2924
+ * @example 4ec8bc86-6180-4d0e-aa72-9cbf402d3638
2925
+ */
2926
+ proposal_id: string;
2927
+ };
2784
2928
  CommunityMirrorPublishResponse: {
2785
2929
  /** @enum {boolean} */
2786
2930
  success: true;
@@ -2802,6 +2946,75 @@ export interface components {
2802
2946
  /** @description Validation details for request-body parse failures or adagents.json conformance errors. */
2803
2947
  details?: unknown[];
2804
2948
  };
2949
+ CommunityMirrorProposalReviewRequest: {
2950
+ /** @description SHA-256 digest that reviewers must echo when approving or rejecting this exact revision. */
2951
+ proposal_digest: string;
2952
+ review_notes?: string;
2953
+ };
2954
+ CommunityMirrorProposalDecisionResponse: {
2955
+ /** @enum {boolean} */
2956
+ success: true;
2957
+ proposal: components["schemas"]["CommunityMirrorProposal"];
2958
+ };
2959
+ CommunityMirrorProposalRejectRequest: {
2960
+ /** @description SHA-256 digest that reviewers must echo when approving or rejecting this exact revision. */
2961
+ proposal_digest: string;
2962
+ review_notes: string;
2963
+ };
2964
+ CommunityMirrorListResponse: {
2965
+ mirrors: components["schemas"]["CommunityMirrorSummary"][];
2966
+ total: number;
2967
+ };
2968
+ CommunityMirrorSummary: {
2969
+ /**
2970
+ * @description Lowercase platform identifier, normalized by the service.
2971
+ * @example example_platform
2972
+ */
2973
+ platform: string;
2974
+ catalog_etag: string | null;
2975
+ /** @description HTTPS successor document URL, when this mirror has been superseded. */
2976
+ superseded_by: string | null;
2977
+ /** Format: date-time */
2978
+ updated_at: string;
2979
+ };
2980
+ CommunityMirrorGetResponse: {
2981
+ /**
2982
+ * @description Lowercase platform identifier, normalized by the service.
2983
+ * @example example_platform
2984
+ */
2985
+ platform: string;
2986
+ catalog_etag: string | null;
2987
+ /** @description HTTPS successor document URL, when this mirror has been superseded. */
2988
+ superseded_by: string | null;
2989
+ adagents_json: components["schemas"]["CommunityMirrorAdagentsJson"];
2990
+ /** Format: date-time */
2991
+ created_at: string;
2992
+ /** Format: date-time */
2993
+ updated_at: string;
2994
+ };
2995
+ CommunityMirrorProposalSubmissionResponse: {
2996
+ /** @enum {boolean} */
2997
+ success: true;
2998
+ /** @enum {string} */
2999
+ status: "pending";
3000
+ /**
3001
+ * Format: uuid
3002
+ * @description Opaque identifier for the proposal.
3003
+ * @example 4ec8bc86-6180-4d0e-aa72-9cbf402d3638
3004
+ */
3005
+ proposal_id: string;
3006
+ /** @description SHA-256 digest that reviewers must echo when approving or rejecting this exact revision. */
3007
+ proposal_digest: string;
3008
+ /**
3009
+ * @description Lowercase platform identifier, normalized by the service.
3010
+ * @example example_platform
3011
+ */
3012
+ platform: string;
3013
+ /** @description Authenticated API path for fetching proposal status and content. */
3014
+ status_url: string;
3015
+ /** Format: date-time */
3016
+ submitted_at: string;
3017
+ };
2805
3018
  /** @description Catalog-only adagents.json body for a community mirror. At least one of `formats`, `properties`, `placements`, `collections`, or `signals` must be present and non-empty. The service regenerates `$schema` and `last_updated` before persisting. */
2806
3019
  CommunityMirrorPublishRequest: ({
2807
3020
  catalog_etag?: string;
@@ -5819,6 +6032,322 @@ export interface operations {
5819
6032
  };
5820
6033
  };
5821
6034
  };
6035
+ listCommunityMirrorProposals: {
6036
+ parameters: {
6037
+ query?: {
6038
+ status?: "pending" | "approved" | "rejected";
6039
+ /** @description Set to `true` for the cross-organization moderator queue; non-moderators receive 403. */
6040
+ review_queue?: "true" | "false";
6041
+ limit?: number;
6042
+ offset?: number;
6043
+ };
6044
+ header?: never;
6045
+ path?: never;
6046
+ cookie?: never;
6047
+ };
6048
+ requestBody?: never;
6049
+ responses: {
6050
+ /** @description Community mirror proposal list */
6051
+ 200: {
6052
+ headers: {
6053
+ [name: string]: unknown;
6054
+ };
6055
+ content: {
6056
+ "application/json": components["schemas"]["CommunityMirrorProposalListResponse"];
6057
+ };
6058
+ };
6059
+ /** @description Invalid status */
6060
+ 400: {
6061
+ headers: {
6062
+ [name: string]: unknown;
6063
+ };
6064
+ content: {
6065
+ "application/json": components["schemas"]["Error"];
6066
+ };
6067
+ };
6068
+ /** @description Authentication required */
6069
+ 401: {
6070
+ headers: {
6071
+ [name: string]: unknown;
6072
+ };
6073
+ content: {
6074
+ "application/json": components["schemas"]["Error"];
6075
+ };
6076
+ };
6077
+ /** @description Moderator access required for the review queue */
6078
+ 403: {
6079
+ headers: {
6080
+ [name: string]: unknown;
6081
+ };
6082
+ content: {
6083
+ "application/json": components["schemas"]["Error"];
6084
+ };
6085
+ };
6086
+ /** @description Rate limit exceeded */
6087
+ 429: {
6088
+ headers: {
6089
+ [name: string]: unknown;
6090
+ };
6091
+ content: {
6092
+ "application/json": components["schemas"]["RateLimitError"];
6093
+ };
6094
+ };
6095
+ /** @description Failed to list proposals */
6096
+ 500: {
6097
+ headers: {
6098
+ [name: string]: unknown;
6099
+ };
6100
+ content: {
6101
+ "application/json": components["schemas"]["Error"];
6102
+ };
6103
+ };
6104
+ };
6105
+ };
6106
+ getCommunityMirrorProposal: {
6107
+ parameters: {
6108
+ query?: never;
6109
+ header?: never;
6110
+ path: {
6111
+ id: string;
6112
+ };
6113
+ cookie?: never;
6114
+ };
6115
+ requestBody?: never;
6116
+ responses: {
6117
+ /** @description Community mirror proposal */
6118
+ 200: {
6119
+ headers: {
6120
+ [name: string]: unknown;
6121
+ };
6122
+ content: {
6123
+ "application/json": components["schemas"]["CommunityMirrorProposalGetResponse"];
6124
+ };
6125
+ };
6126
+ /** @description Invalid proposal identifier */
6127
+ 400: {
6128
+ headers: {
6129
+ [name: string]: unknown;
6130
+ };
6131
+ content: {
6132
+ "application/json": components["schemas"]["Error"];
6133
+ };
6134
+ };
6135
+ /** @description Authentication required */
6136
+ 401: {
6137
+ headers: {
6138
+ [name: string]: unknown;
6139
+ };
6140
+ content: {
6141
+ "application/json": components["schemas"]["Error"];
6142
+ };
6143
+ };
6144
+ /** @description Proposal not found or not visible to the caller */
6145
+ 404: {
6146
+ headers: {
6147
+ [name: string]: unknown;
6148
+ };
6149
+ content: {
6150
+ "application/json": components["schemas"]["Error"];
6151
+ };
6152
+ };
6153
+ /** @description Rate limit exceeded */
6154
+ 429: {
6155
+ headers: {
6156
+ [name: string]: unknown;
6157
+ };
6158
+ content: {
6159
+ "application/json": components["schemas"]["RateLimitError"];
6160
+ };
6161
+ };
6162
+ /** @description Failed to read proposal */
6163
+ 500: {
6164
+ headers: {
6165
+ [name: string]: unknown;
6166
+ };
6167
+ content: {
6168
+ "application/json": components["schemas"]["Error"];
6169
+ };
6170
+ };
6171
+ };
6172
+ };
6173
+ approveCommunityMirrorProposal: {
6174
+ parameters: {
6175
+ query?: never;
6176
+ header?: never;
6177
+ path: {
6178
+ id: string;
6179
+ };
6180
+ cookie?: never;
6181
+ };
6182
+ requestBody: {
6183
+ content: {
6184
+ "application/json": components["schemas"]["CommunityMirrorProposalReviewRequest"];
6185
+ };
6186
+ };
6187
+ responses: {
6188
+ /** @description Proposal approved and mirror published */
6189
+ 200: {
6190
+ headers: {
6191
+ [name: string]: unknown;
6192
+ };
6193
+ content: {
6194
+ "application/json": components["schemas"]["CommunityMirrorProposalApprovalResponse"];
6195
+ };
6196
+ };
6197
+ /** @description Invalid identifier, review body, or stale schema conformance */
6198
+ 400: {
6199
+ headers: {
6200
+ [name: string]: unknown;
6201
+ };
6202
+ content: {
6203
+ "application/json": components["schemas"]["CommunityMirrorPublishError"];
6204
+ };
6205
+ };
6206
+ /** @description Authentication required */
6207
+ 401: {
6208
+ headers: {
6209
+ [name: string]: unknown;
6210
+ };
6211
+ content: {
6212
+ "application/json": components["schemas"]["Error"];
6213
+ };
6214
+ };
6215
+ /** @description Reviewer role required */
6216
+ 403: {
6217
+ headers: {
6218
+ [name: string]: unknown;
6219
+ };
6220
+ content: {
6221
+ "application/json": components["schemas"]["Error"];
6222
+ };
6223
+ };
6224
+ /** @description Proposal not found */
6225
+ 404: {
6226
+ headers: {
6227
+ [name: string]: unknown;
6228
+ };
6229
+ content: {
6230
+ "application/json": components["schemas"]["Error"];
6231
+ };
6232
+ };
6233
+ /** @description Proposal changed after review, its base mirror is stale, or it was already reviewed */
6234
+ 409: {
6235
+ headers: {
6236
+ [name: string]: unknown;
6237
+ };
6238
+ content: {
6239
+ "application/json": components["schemas"]["Error"];
6240
+ };
6241
+ };
6242
+ /** @description Rate limit exceeded */
6243
+ 429: {
6244
+ headers: {
6245
+ [name: string]: unknown;
6246
+ };
6247
+ content: {
6248
+ "application/json": components["schemas"]["RateLimitError"];
6249
+ };
6250
+ };
6251
+ /** @description Failed to approve proposal */
6252
+ 500: {
6253
+ headers: {
6254
+ [name: string]: unknown;
6255
+ };
6256
+ content: {
6257
+ "application/json": components["schemas"]["Error"];
6258
+ };
6259
+ };
6260
+ };
6261
+ };
6262
+ rejectCommunityMirrorProposal: {
6263
+ parameters: {
6264
+ query?: never;
6265
+ header?: never;
6266
+ path: {
6267
+ id: string;
6268
+ };
6269
+ cookie?: never;
6270
+ };
6271
+ requestBody: {
6272
+ content: {
6273
+ "application/json": components["schemas"]["CommunityMirrorProposalRejectRequest"];
6274
+ };
6275
+ };
6276
+ responses: {
6277
+ /** @description Proposal rejected */
6278
+ 200: {
6279
+ headers: {
6280
+ [name: string]: unknown;
6281
+ };
6282
+ content: {
6283
+ "application/json": components["schemas"]["CommunityMirrorProposalDecisionResponse"];
6284
+ };
6285
+ };
6286
+ /** @description Invalid identifier or review body */
6287
+ 400: {
6288
+ headers: {
6289
+ [name: string]: unknown;
6290
+ };
6291
+ content: {
6292
+ "application/json": components["schemas"]["CommunityMirrorPublishError"];
6293
+ };
6294
+ };
6295
+ /** @description Authentication required */
6296
+ 401: {
6297
+ headers: {
6298
+ [name: string]: unknown;
6299
+ };
6300
+ content: {
6301
+ "application/json": components["schemas"]["Error"];
6302
+ };
6303
+ };
6304
+ /** @description Reviewer role required */
6305
+ 403: {
6306
+ headers: {
6307
+ [name: string]: unknown;
6308
+ };
6309
+ content: {
6310
+ "application/json": components["schemas"]["Error"];
6311
+ };
6312
+ };
6313
+ /** @description Proposal not found */
6314
+ 404: {
6315
+ headers: {
6316
+ [name: string]: unknown;
6317
+ };
6318
+ content: {
6319
+ "application/json": components["schemas"]["Error"];
6320
+ };
6321
+ };
6322
+ /** @description Proposal changed after review or was already reviewed */
6323
+ 409: {
6324
+ headers: {
6325
+ [name: string]: unknown;
6326
+ };
6327
+ content: {
6328
+ "application/json": components["schemas"]["Error"];
6329
+ };
6330
+ };
6331
+ /** @description Rate limit exceeded */
6332
+ 429: {
6333
+ headers: {
6334
+ [name: string]: unknown;
6335
+ };
6336
+ content: {
6337
+ "application/json": components["schemas"]["RateLimitError"];
6338
+ };
6339
+ };
6340
+ /** @description Failed to reject proposal */
6341
+ 500: {
6342
+ headers: {
6343
+ [name: string]: unknown;
6344
+ };
6345
+ content: {
6346
+ "application/json": components["schemas"]["Error"];
6347
+ };
6348
+ };
6349
+ };
6350
+ };
5822
6351
  listCommunityMirrors: {
5823
6352
  parameters: {
5824
6353
  query?: {
@@ -5946,6 +6475,15 @@ export interface operations {
5946
6475
  "application/json": components["schemas"]["CommunityMirrorPublishResponse"];
5947
6476
  };
5948
6477
  };
6478
+ /** @description Community mirror proposal accepted for review */
6479
+ 202: {
6480
+ headers: {
6481
+ [name: string]: unknown;
6482
+ };
6483
+ content: {
6484
+ "application/json": components["schemas"]["CommunityMirrorProposalSubmissionResponse"];
6485
+ };
6486
+ };
5949
6487
  /** @description Invalid platform, request body, or adagents.json conformance failure */
5950
6488
  400: {
5951
6489
  headers: {
@@ -5964,7 +6502,7 @@ export interface operations {
5964
6502
  "application/json": components["schemas"]["Error"];
5965
6503
  };
5966
6504
  };
5967
- /** @description Only registry moderators or AgenticAdvertising.org admins can manage community mirrors */
6505
+ /** @description Organization context required for community proposals */
5968
6506
  403: {
5969
6507
  headers: {
5970
6508
  [name: string]: unknown;
@@ -5973,6 +6511,15 @@ export interface operations {
5973
6511
  "application/json": components["schemas"]["Error"];
5974
6512
  };
5975
6513
  };
6514
+ /** @description Proposal body or catalog item count exceeds the contributor limit */
6515
+ 413: {
6516
+ headers: {
6517
+ [name: string]: unknown;
6518
+ };
6519
+ content: {
6520
+ "application/json": components["schemas"]["Error"];
6521
+ };
6522
+ };
5976
6523
  /** @description Rate limit exceeded */
5977
6524
  429: {
5978
6525
  headers: {
@@ -8845,10 +9392,15 @@ export interface operations {
8845
9392
  /** @example acmecorp.com */
8846
9393
  domain: string;
8847
9394
  brand_name: string;
8848
- /** @description Optional full brand.json draft to host in the registry */
9395
+ /** @description Optional full brand.json draft to host in the registry. Every recognized logo URL must be an absolute HTTPS URL of at most 2048 characters without userinfo credentials, backslashes, or markup-significant characters. The primary brand color must use #RRGGBB format. */
8849
9396
  brand_json?: {
8850
9397
  [key: string]: unknown;
8851
9398
  };
9399
+ /**
9400
+ * Format: uri
9401
+ * @description Absolute HTTPS URL for the brand logo. Userinfo credentials, backslashes, and markup-significant characters are not allowed.
9402
+ * @example https://cdn.example.com/brand/logo.svg
9403
+ */
8852
9404
  logo_url?: string;
8853
9405
  brand_color?: string;
8854
9406
  };