@adcp/sdk 6.7.0 → 6.8.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 (166) hide show
  1. package/bin/adcp.js +15 -3
  2. package/dist/lib/adapters/derived-account-store.d.ts +152 -0
  3. package/dist/lib/adapters/derived-account-store.d.ts.map +1 -0
  4. package/dist/lib/adapters/derived-account-store.js +135 -0
  5. package/dist/lib/adapters/derived-account-store.js.map +1 -0
  6. package/dist/lib/adapters/implicit-account-store.d.ts +3 -1
  7. package/dist/lib/adapters/implicit-account-store.d.ts.map +1 -1
  8. package/dist/lib/adapters/implicit-account-store.js +3 -1
  9. package/dist/lib/adapters/implicit-account-store.js.map +1 -1
  10. package/dist/lib/adapters/index.d.ts +1 -0
  11. package/dist/lib/adapters/index.d.ts.map +1 -1
  12. package/dist/lib/adapters/index.js +7 -1
  13. package/dist/lib/adapters/index.js.map +1 -1
  14. package/dist/lib/adapters/oauth-passthrough-resolver.d.ts +3 -1
  15. package/dist/lib/adapters/oauth-passthrough-resolver.d.ts.map +1 -1
  16. package/dist/lib/adapters/oauth-passthrough-resolver.js +3 -1
  17. package/dist/lib/adapters/oauth-passthrough-resolver.js.map +1 -1
  18. package/dist/lib/adapters/roster-account-store.d.ts +85 -24
  19. package/dist/lib/adapters/roster-account-store.d.ts.map +1 -1
  20. package/dist/lib/adapters/roster-account-store.js +52 -30
  21. package/dist/lib/adapters/roster-account-store.js.map +1 -1
  22. package/dist/lib/index.d.ts +3 -3
  23. package/dist/lib/index.d.ts.map +1 -1
  24. package/dist/lib/index.js +13 -8
  25. package/dist/lib/index.js.map +1 -1
  26. package/dist/lib/mock-server/creative-ad-server/seed-data.d.ts +81 -0
  27. package/dist/lib/mock-server/creative-ad-server/seed-data.d.ts.map +1 -0
  28. package/dist/lib/mock-server/creative-ad-server/seed-data.js +200 -0
  29. package/dist/lib/mock-server/creative-ad-server/seed-data.js.map +1 -0
  30. package/dist/lib/mock-server/creative-ad-server/server.d.ts +39 -0
  31. package/dist/lib/mock-server/creative-ad-server/server.d.ts.map +1 -0
  32. package/dist/lib/mock-server/creative-ad-server/server.js +618 -0
  33. package/dist/lib/mock-server/creative-ad-server/server.js.map +1 -0
  34. package/dist/lib/mock-server/index.d.ts.map +1 -1
  35. package/dist/lib/mock-server/index.js +180 -24
  36. package/dist/lib/mock-server/index.js.map +1 -1
  37. package/dist/lib/mock-server/sales-non-guaranteed/seed-data.d.ts +66 -0
  38. package/dist/lib/mock-server/sales-non-guaranteed/seed-data.d.ts.map +1 -0
  39. package/dist/lib/mock-server/sales-non-guaranteed/seed-data.js +193 -0
  40. package/dist/lib/mock-server/sales-non-guaranteed/seed-data.js.map +1 -0
  41. package/dist/lib/mock-server/sales-non-guaranteed/server.d.ts +33 -0
  42. package/dist/lib/mock-server/sales-non-guaranteed/server.d.ts.map +1 -0
  43. package/dist/lib/mock-server/sales-non-guaranteed/server.js +782 -0
  44. package/dist/lib/mock-server/sales-non-guaranteed/server.js.map +1 -0
  45. package/dist/lib/mock-server/sponsored-intelligence/seed-data.d.ts +50 -0
  46. package/dist/lib/mock-server/sponsored-intelligence/seed-data.d.ts.map +1 -0
  47. package/dist/lib/mock-server/sponsored-intelligence/seed-data.js +133 -0
  48. package/dist/lib/mock-server/sponsored-intelligence/seed-data.js.map +1 -0
  49. package/dist/lib/mock-server/sponsored-intelligence/server.d.ts +13 -0
  50. package/dist/lib/mock-server/sponsored-intelligence/server.d.ts.map +1 -0
  51. package/dist/lib/mock-server/sponsored-intelligence/server.js +609 -0
  52. package/dist/lib/mock-server/sponsored-intelligence/server.js.map +1 -0
  53. package/dist/lib/protocols/mcp.d.ts.map +1 -1
  54. package/dist/lib/protocols/mcp.js +1 -41
  55. package/dist/lib/protocols/mcp.js.map +1 -1
  56. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  57. package/dist/lib/server/account-mode.d.ts +113 -0
  58. package/dist/lib/server/account-mode.d.ts.map +1 -0
  59. package/dist/lib/server/account-mode.js +125 -0
  60. package/dist/lib/server/account-mode.js.map +1 -0
  61. package/dist/lib/server/adcp-server.js +41 -0
  62. package/dist/lib/server/adcp-server.js.map +1 -1
  63. package/dist/lib/server/auth.d.ts +35 -0
  64. package/dist/lib/server/auth.d.ts.map +1 -1
  65. package/dist/lib/server/auth.js.map +1 -1
  66. package/dist/lib/server/create-adcp-server.d.ts +26 -9
  67. package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
  68. package/dist/lib/server/create-adcp-server.js +46 -20
  69. package/dist/lib/server/create-adcp-server.js.map +1 -1
  70. package/dist/lib/server/ctx-metadata/store.d.ts +1 -1
  71. package/dist/lib/server/ctx-metadata/store.d.ts.map +1 -1
  72. package/dist/lib/server/ctx-metadata/store.js +1 -0
  73. package/dist/lib/server/ctx-metadata/store.js.map +1 -1
  74. package/dist/lib/server/decisioning/account.d.ts +5 -0
  75. package/dist/lib/server/decisioning/account.d.ts.map +1 -1
  76. package/dist/lib/server/decisioning/account.js.map +1 -1
  77. package/dist/lib/server/decisioning/buyer-agent.d.ts +37 -4
  78. package/dist/lib/server/decisioning/buyer-agent.d.ts.map +1 -1
  79. package/dist/lib/server/decisioning/buyer-agent.js +12 -2
  80. package/dist/lib/server/decisioning/buyer-agent.js.map +1 -1
  81. package/dist/lib/server/decisioning/compose.d.ts +33 -2
  82. package/dist/lib/server/decisioning/compose.d.ts.map +1 -1
  83. package/dist/lib/server/decisioning/compose.js +13 -46
  84. package/dist/lib/server/decisioning/compose.js.map +1 -1
  85. package/dist/lib/server/decisioning/index.d.ts +2 -1
  86. package/dist/lib/server/decisioning/index.d.ts.map +1 -1
  87. package/dist/lib/server/decisioning/index.js +2 -1
  88. package/dist/lib/server/decisioning/index.js.map +1 -1
  89. package/dist/lib/server/decisioning/platform-helpers.d.ts +18 -0
  90. package/dist/lib/server/decisioning/platform-helpers.d.ts.map +1 -1
  91. package/dist/lib/server/decisioning/platform-helpers.js +20 -0
  92. package/dist/lib/server/decisioning/platform-helpers.js.map +1 -1
  93. package/dist/lib/server/decisioning/platform.d.ts +19 -21
  94. package/dist/lib/server/decisioning/platform.d.ts.map +1 -1
  95. package/dist/lib/server/decisioning/platform.js.map +1 -1
  96. package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -1
  97. package/dist/lib/server/decisioning/runtime/from-platform.js +334 -44
  98. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  99. package/dist/lib/server/decisioning/runtime/observed-modes.d.ts +40 -0
  100. package/dist/lib/server/decisioning/runtime/observed-modes.d.ts.map +1 -0
  101. package/dist/lib/server/decisioning/runtime/observed-modes.js +82 -0
  102. package/dist/lib/server/decisioning/runtime/observed-modes.js.map +1 -0
  103. package/dist/lib/server/decisioning/runtime/protocol-for-tool.js +2 -2
  104. package/dist/lib/server/decisioning/runtime/protocol-for-tool.js.map +1 -1
  105. package/dist/lib/server/decisioning/runtime/validate-platform.d.ts.map +1 -1
  106. package/dist/lib/server/decisioning/runtime/validate-platform.js +9 -1
  107. package/dist/lib/server/decisioning/runtime/validate-platform.js.map +1 -1
  108. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.d.ts +125 -0
  109. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.d.ts.map +1 -0
  110. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.js +52 -0
  111. package/dist/lib/server/decisioning/specialisms/sponsored-intelligence.js.map +1 -0
  112. package/dist/lib/server/decisioning/tenant-registry.d.ts +16 -0
  113. package/dist/lib/server/decisioning/tenant-registry.d.ts.map +1 -1
  114. package/dist/lib/server/decisioning/tenant-registry.js.map +1 -1
  115. package/dist/lib/server/index.d.ts +4 -1
  116. package/dist/lib/server/index.d.ts.map +1 -1
  117. package/dist/lib/server/index.js +9 -3
  118. package/dist/lib/server/index.js.map +1 -1
  119. package/dist/lib/server/serve.js +20 -2
  120. package/dist/lib/server/serve.js.map +1 -1
  121. package/dist/lib/server/test-controller.d.ts +3 -0
  122. package/dist/lib/server/test-controller.d.ts.map +1 -1
  123. package/dist/lib/server/test-controller.js +23 -20
  124. package/dist/lib/server/test-controller.js.map +1 -1
  125. package/dist/lib/testing/comply-controller.d.ts +23 -2
  126. package/dist/lib/testing/comply-controller.d.ts.map +1 -1
  127. package/dist/lib/testing/comply-controller.js +19 -2
  128. package/dist/lib/testing/comply-controller.js.map +1 -1
  129. package/dist/lib/testing/index.d.ts +1 -1
  130. package/dist/lib/testing/index.d.ts.map +1 -1
  131. package/dist/lib/testing/index.js.map +1 -1
  132. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  133. package/dist/lib/testing/storyboard/validations.js +36 -54
  134. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  135. package/dist/lib/testing/test-controller.d.ts +10 -4
  136. package/dist/lib/testing/test-controller.d.ts.map +1 -1
  137. package/dist/lib/testing/test-controller.js +9 -3
  138. package/dist/lib/testing/test-controller.js.map +1 -1
  139. package/dist/lib/types/index.d.ts +3 -2
  140. package/dist/lib/types/index.d.ts.map +1 -1
  141. package/dist/lib/types/index.js +3 -0
  142. package/dist/lib/types/index.js.map +1 -1
  143. package/dist/lib/utils/glob.d.ts +4 -2
  144. package/dist/lib/utils/glob.d.ts.map +1 -1
  145. package/dist/lib/utils/glob.js +4 -2
  146. package/dist/lib/utils/glob.js.map +1 -1
  147. package/dist/lib/version.d.ts +3 -3
  148. package/dist/lib/version.js +3 -3
  149. package/docs/llms.txt +2 -2
  150. package/examples/README.md +29 -13
  151. package/examples/hello-cluster.ts +62 -23
  152. package/examples/hello_creative_adapter_ad_server.ts +790 -0
  153. package/examples/hello_seller_adapter_guaranteed.ts +80 -22
  154. package/examples/hello_seller_adapter_non_guaranteed.ts +1020 -0
  155. package/examples/hello_si_adapter_brand.ts +572 -0
  156. package/package.json +3 -2
  157. package/skills/build-creative-agent/SKILL.md +103 -183
  158. package/skills/build-generative-seller-agent/SKILL.md +15 -9
  159. package/skills/build-governance-agent/SKILL.md +20 -11
  160. package/skills/build-retail-media-agent/SKILL.md +10 -8
  161. package/skills/build-seller-agent/SKILL.md +15 -13
  162. package/skills/build-seller-agent/specialisms/sales-non-guaranteed.md +9 -31
  163. package/skills/build-si-agent/SKILL.md +251 -196
  164. package/skills/build-signals-agent/SKILL.md +2 -0
  165. package/skills/call-adcp-agent/SKILL.md +7 -1
  166. package/skills/call-adcp-agent.previous/SKILL.md +0 -261
@@ -6,23 +6,39 @@ This directory contains practical examples of how to use the `@adcp/sdk` library
6
6
 
7
7
  Pick the example whose AdCP role and specialism most closely match what you're building, fork the file, replace the `// SWAP:` markers, and follow the `FORK CHECKLIST` block at the top of each adapter for the unmarked but load-bearing constants. Each adapter is paired with a three-gate CI test (strict tsc / storyboard / upstream-traffic) so a regression in your fork fails CI before it ships.
8
8
 
9
- | If you're claiming… | Fork | Then… |
10
- | ---------------------------------- | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
11
- | `signal-marketplace` / `signal-owned` | `hello_signals_adapter_marketplace.ts` | as-is for marketplace; `signal-owned` adopters drop the marketplace-specific tax/rev-share fields |
12
- | `creative-template` | `hello_creative_adapter_template.ts` | as-is — single-tenant; production adopters add per-tenant workspace binding (see SWAP markers) |
13
- | `creative-generative` | `hello_creative_adapter_template.ts` | replace template-driven `buildCreative` with brief-driven generation; keep the `previewCreative` shape |
14
- | `creative-ad-server` | `hello_creative_adapter_template.ts` | promote to `CreativeAdServerPlatform`, add `syncCreatives` library + `listCreatives` query + tag-rendering on `buildCreative` |
15
- | `sales-non-guaranteed` | `hello_seller_adapter_social.ts` | drop OAuth (use static Bearer or your auth), add `getProducts` + `createMediaBuy` + `updateMediaBuy` + `getMediaBuyDelivery` + `getMediaBuys` |
16
- | `sales-guaranteed` | `hello_seller_adapter_guaranteed.ts` | as-is — covers the HITL flow |
17
- | `sales-broadcast-tv` | `hello_seller_adapter_guaranteed.ts` | replace `audience_targeting` with broadcast-DMA targeting; replace `Product.channels` with `linear_tv` |
18
- | `sales-streaming-tv` | `hello_seller_adapter_guaranteed.ts` | adjust `Product.channels` to `ctv` |
19
- | `sales-social` | `hello_seller_adapter_social.ts` | as-is |
20
- | `sales-catalog-driven` | `hello_seller_adapter_social.ts` | promote `syncCatalogs` to a real catalog ingestion + `getProducts` reads from the catalog |
21
- | `audience-sync` | `hello_seller_adapter_social.ts` | strip everything except `syncAudiences` + `pollAudienceStatuses`; this is the standalone audience-sync seller pattern |
9
+ | If you're claiming… | Fork | Then… |
10
+ | ---------------------------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
11
+ | `signal-marketplace` / `signal-owned` | `hello_signals_adapter_marketplace.ts` | as-is for marketplace; `signal-owned` adopters drop the marketplace-specific tax/rev-share fields |
12
+ | `creative-template` | `hello_creative_adapter_template.ts` | as-is — single-tenant; production adopters add per-tenant workspace binding (see SWAP markers) |
13
+ | `creative-generative` | `hello_creative_adapter_template.ts` | replace template-driven `buildCreative` with brief-driven generation; keep the `previewCreative` shape |
14
+ | `creative-ad-server` | `hello_creative_adapter_ad_server.ts` | as-is covers the stateful library + tag generation + macro substitution + delivery reporting flow |
15
+ | `sales-non-guaranteed` | `hello_seller_adapter_non_guaranteed.ts` | as-is covers sync confirmation, floor pricing, spend-only forecast, pacing propagation |
16
+ | `sales-guaranteed` | `hello_seller_adapter_guaranteed.ts` | as-is — covers the HITL flow |
17
+ | `sales-broadcast-tv` | `hello_seller_adapter_guaranteed.ts` | replace `audience_targeting` with broadcast-DMA targeting; replace `Product.channels` with `linear_tv` |
18
+ | `sales-streaming-tv` | `hello_seller_adapter_guaranteed.ts` | adjust `Product.channels` to `ctv` |
19
+ | `sales-social` | `hello_seller_adapter_social.ts` | as-is |
20
+ | `sales-catalog-driven` | `hello_seller_adapter_social.ts` | promote `syncCatalogs` to a real catalog ingestion + `getProducts` reads from the catalog |
21
+ | `audience-sync` | `hello_seller_adapter_social.ts` | strip everything except `syncAudiences` + `pollAudienceStatuses`; this is the standalone audience-sync seller pattern |
22
22
  | `governance-spend-authority` / `property-lists` / `brand-rights` | `hello_seller_adapter_multi_tenant.ts` | as-is — multi-specialism + multi-tenant agency / holdco shape; closes adcp-client#1332 (governance) and adcp-client#1334 (brand-rights). Single-specialism adopters fork the relevant handler block out of the same file. |
23
23
 
24
24
  Naming convention: `hello_<role>_adapter_<specialism>.ts` where `<role>` is the AdCP protocol layer (`seller` for `media-buy`, `creative` for `creative`, `signals` for `signals`, `governance` for `governance`, `brand` for `brand`). `<specialism>` strips the role-implied prefix (so `creative-template` → `_template`, `sales-guaranteed` → `_guaranteed`). The multi-tenant holdco adapter sits outside this convention because it spans multiple roles (governance + brand-rights + property-lists) — naming follows the deployment shape rather than a single role.
25
25
 
26
+ ## Common multi-specialism bundles
27
+
28
+ Real platforms typically claim more than one specialism. Claim a specialism only if (a) you implement its required tools **and** (b) you are prepared to receive and service requests for that flow in production. Stub-throw or empty-array implementations are a smell — drop the claim instead.
29
+
30
+ | Adopter shape | Canonical specialism bundle | Skills |
31
+ | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
32
+ | Retail-media network (Amazon Ads, Walmart Connect, Citrus) | `sales-catalog-driven` + `audience-sync` + `creative-template` | [retail-media](../skills/build-retail-media-agent/SKILL.md), [seller](../skills/build-seller-agent/SKILL.md), [creative](../skills/build-creative-agent/SKILL.md) |
33
+ | Hybrid creative platform (Celtra, Bannerflow) | `creative-template` + `creative-generative` | [creative](../skills/build-creative-agent/SKILL.md), [generative-seller](../skills/build-generative-seller-agent/SKILL.md) |
34
+ | Walled-garden social network (Meta, Snap, TikTok) | `sales-social` + `audience-sync` | [seller](../skills/build-seller-agent/SKILL.md) |
35
+ | Premium broadcaster (Paramount, Disney) | `sales-broadcast-tv` + `sales-streaming-tv` _(preview)_ | [seller](../skills/build-seller-agent/SKILL.md) |
36
+ | DSP-side seller (Scope3, Trade Desk) | `sales-non-guaranteed` + `signal-marketplace` | [seller](../skills/build-seller-agent/SKILL.md), [signals](../skills/build-signals-agent/SKILL.md) |
37
+ | Identity provider (LiveRamp, ID5) | `signal-owned` + `audience-sync` | [signals](../skills/build-signals-agent/SKILL.md), [seller](../skills/build-seller-agent/SKILL.md) |
38
+ | Governance vendor (IAS, DV) | `governance-delivery-monitor` + `measurement-verification` _(preview)_ + `content-standards` | [governance](../skills/build-governance-agent/SKILL.md) |
39
+
40
+ > Each specialism runs its own compliance storyboard independently — no joint multi-specialism storyboard exists yet. For cross-protocol bundles (e.g. DSP-side seller spans `media-buy` + `signals`), run each protocol's storyboard separately.
41
+
26
42
  ## Examples
27
43
 
28
44
  ### Basic Usage
@@ -74,55 +74,94 @@ const HEALTH_TIMEOUT_MS = 5_000;
74
74
  const SHUTDOWN_GRACE_MS = 3_000;
75
75
  const REPO_ROOT = resolvePath(__dirname, '..');
76
76
 
77
+ /** Every mock-server exposes auth-free `GET /_debug/traffic` returning a
78
+ * JSON object — used as the universal liveness probe across the cluster.
79
+ * Matches what the mock-servers ship today; if a future mock drops this
80
+ * surface, swap to a specialism-specific lookup path here. */
81
+ const UNIVERSAL_PROBE_PATH = '/_debug/traffic';
82
+
77
83
  const ADAPTERS: AdapterConfig[] = [
78
84
  {
79
85
  name: 'signals',
80
86
  specialism: 'signal-marketplace',
81
87
  port: 3001,
82
88
  entrypoint: 'examples/hello_signals_adapter_marketplace.ts',
83
- upstream: {
84
- envVar: 'UPSTREAM_URL',
85
- defaultUrl: 'http://127.0.0.1:4150',
86
- // /_lookup/operator answers 200 with `{}` when the operator is unknown,
87
- // so any HTTP response means the mock-server's listener is up.
88
- probePath: '/_lookup/operator?adcp_operator=preflight',
89
- },
89
+ upstream: { envVar: 'UPSTREAM_URL', defaultUrl: 'http://127.0.0.1:4150', probePath: UNIVERSAL_PROBE_PATH },
90
90
  },
91
91
  {
92
- name: 'sales',
93
- specialism: 'sales-non-guaranteed',
92
+ name: 'creative-template',
93
+ specialism: 'creative-template',
94
94
  port: 3002,
95
- entrypoint: 'examples/hello_seller_adapter_non_guaranteed.ts',
95
+ entrypoint: 'examples/hello_creative_adapter_template.ts',
96
+ upstream: { envVar: 'UPSTREAM_URL', defaultUrl: 'http://127.0.0.1:4250', probePath: UNIVERSAL_PROBE_PATH },
96
97
  },
97
98
  {
98
- name: 'governance',
99
- specialism: 'governance-spend-authority',
99
+ name: 'sales-social',
100
+ specialism: 'sales-social',
100
101
  port: 3003,
101
- entrypoint: 'examples/hello_governance_adapter_spend_authority.ts',
102
- tracking: '#1332',
102
+ entrypoint: 'examples/hello_seller_adapter_social.ts',
103
+ upstream: { envVar: 'UPSTREAM_URL', defaultUrl: 'http://127.0.0.1:4350', probePath: UNIVERSAL_PROBE_PATH },
103
104
  },
104
105
  {
105
- name: 'creative',
106
- specialism: 'creative-ad-server',
106
+ name: 'sales-guaranteed',
107
+ specialism: 'sales-guaranteed',
107
108
  port: 3004,
109
+ entrypoint: 'examples/hello_seller_adapter_guaranteed.ts',
110
+ upstream: { envVar: 'UPSTREAM_URL', defaultUrl: 'http://127.0.0.1:4450', probePath: UNIVERSAL_PROBE_PATH },
111
+ },
112
+ {
113
+ name: 'sales-non-guaranteed',
114
+ specialism: 'sales-non-guaranteed',
115
+ port: 3005,
116
+ entrypoint: 'examples/hello_seller_adapter_non_guaranteed.ts',
117
+ upstream: { envVar: 'UPSTREAM_URL', defaultUrl: 'http://127.0.0.1:4451', probePath: UNIVERSAL_PROBE_PATH },
118
+ },
119
+ {
120
+ name: 'creative-ad-server',
121
+ specialism: 'creative-ad-server',
122
+ port: 3006,
108
123
  entrypoint: 'examples/hello_creative_adapter_ad_server.ts',
109
- tracking: '#1333',
124
+ upstream: { envVar: 'UPSTREAM_URL', defaultUrl: 'http://127.0.0.1:4452', probePath: UNIVERSAL_PROBE_PATH },
125
+ },
126
+ {
127
+ name: 'sponsored-intelligence',
128
+ specialism: 'sponsored-intelligence',
129
+ port: 3007,
130
+ entrypoint: 'examples/hello_si_adapter_brand.ts',
131
+ upstream: { envVar: 'UPSTREAM_URL', defaultUrl: 'http://127.0.0.1:4504', probePath: UNIVERSAL_PROBE_PATH },
132
+ },
133
+ {
134
+ // The multi-tenant adapter claims governance-spend-authority +
135
+ // property-lists + brand-rights against in-memory state — no upstream
136
+ // mock to probe. Useful as the agency / holdco worked example.
137
+ name: 'multi-tenant',
138
+ specialism: 'governance-spend-authority+property-lists+brand-rights',
139
+ port: 3008,
140
+ entrypoint: 'examples/hello_seller_adapter_multi_tenant.ts',
110
141
  },
142
+ // ─── Pending-tracking entries — auto-skip until the example file lands.
143
+ // The `pending:` block in the manifest surfaces them so adopters know
144
+ // what's coming.
111
145
  {
112
- name: 'brand',
146
+ name: 'governance',
147
+ specialism: 'governance-spend-authority',
148
+ port: 3010,
149
+ entrypoint: 'examples/hello_governance_adapter_spend_authority.ts',
150
+ tracking: '#1332',
151
+ },
152
+ {
153
+ name: 'brand-rights',
113
154
  specialism: 'brand-rights',
114
- port: 3005,
155
+ port: 3011,
115
156
  entrypoint: 'examples/hello_brand_adapter_rights.ts',
116
157
  tracking: '#1334',
117
158
  },
118
159
  {
119
160
  // `sales-retail-media` is a preview specialism in 3.0 — claiming it
120
- // advertises intent; no storyboard backs it yet. A real retail-media
121
- // adapter would also claim `sales-catalog-driven`; the manifest's
122
- // single-specialism slot is a forced fit at the hello tier.
161
+ // advertises intent; no storyboard backs it yet.
123
162
  name: 'retail-media',
124
163
  specialism: 'sales-retail-media',
125
- port: 3006,
164
+ port: 3012,
126
165
  entrypoint: 'examples/hello_seller_adapter_retail_media.ts',
127
166
  },
128
167
  ];