@adcp/sdk 9.0.0-beta.27 → 9.0.0-beta.28

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 (54) hide show
  1. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  2. package/dist/lib/core/SingleAgentClient.d.ts +9 -0
  3. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  4. package/dist/lib/core/SingleAgentClient.js +48 -0
  5. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  6. package/dist/lib/errors/index.d.ts +43 -3
  7. package/dist/lib/errors/index.d.ts.map +1 -1
  8. package/dist/lib/errors/index.js +49 -4
  9. package/dist/lib/errors/index.js.map +1 -1
  10. package/dist/lib/index.d.ts +3 -2
  11. package/dist/lib/index.d.ts.map +1 -1
  12. package/dist/lib/index.js +31 -23
  13. package/dist/lib/index.js.map +1 -1
  14. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  15. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  16. package/dist/lib/testing/compliance/comply.js +1 -0
  17. package/dist/lib/testing/compliance/comply.js.map +1 -1
  18. package/dist/lib/testing/compliance/types.d.ts +1 -0
  19. package/dist/lib/testing/compliance/types.d.ts.map +1 -1
  20. package/dist/lib/testing/storyboard/compliance.d.ts.map +1 -1
  21. package/dist/lib/testing/storyboard/compliance.js +25 -8
  22. package/dist/lib/testing/storyboard/compliance.js.map +1 -1
  23. package/dist/lib/testing/storyboard/default-invariants.js +12 -7
  24. package/dist/lib/testing/storyboard/default-invariants.js.map +1 -1
  25. package/dist/lib/testing/storyboard/probes.d.ts +4 -12
  26. package/dist/lib/testing/storyboard/probes.d.ts.map +1 -1
  27. package/dist/lib/testing/storyboard/probes.js +216 -153
  28. package/dist/lib/testing/storyboard/probes.js.map +1 -1
  29. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  30. package/dist/lib/testing/storyboard/runner.js +81 -5
  31. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  32. package/dist/lib/testing/storyboard/types.d.ts +4 -0
  33. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  34. package/dist/lib/testing/storyboard/types.js.map +1 -1
  35. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  36. package/dist/lib/testing/storyboard/validations.js +11 -5
  37. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  38. package/dist/lib/utils/capabilities.d.ts +2 -0
  39. package/dist/lib/utils/capabilities.d.ts.map +1 -1
  40. package/dist/lib/utils/capabilities.js +24 -3
  41. package/dist/lib/utils/capabilities.js.map +1 -1
  42. package/dist/lib/utils/index.d.ts +1 -1
  43. package/dist/lib/utils/index.d.ts.map +1 -1
  44. package/dist/lib/utils/index.js.map +1 -1
  45. package/dist/lib/utils/preview-utils.d.ts +36 -1
  46. package/dist/lib/utils/preview-utils.d.ts.map +1 -1
  47. package/dist/lib/utils/preview-utils.js +53 -16
  48. package/dist/lib/utils/preview-utils.js.map +1 -1
  49. package/dist/lib/version.d.ts +3 -3
  50. package/dist/lib/version.js +3 -3
  51. package/docs/guides/BUILD-AN-AGENT.md +1 -1
  52. package/docs/guides/PREVIEW-ASSET-DURABILITY.md +157 -0
  53. package/package.json +2 -1
  54. package/skills/build-creative-agent/SKILL.md +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAIlF,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AAGzB,eAAO,MAAM,eAAe,QAAmD,CAAC;AAChF,eAAO,MAAM,cAAc,QAA8C,CAAC;AAG1E,eAAO,MAAM,gBAAgB,EAAE,cAAc,EA8C5C,CAAC;AAEF;;GAEG;AACH,qBAAa,cAAc;IAOb,OAAO,CAAC,OAAO;IAN3B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAA6C;IAC1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAK;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAElB,OAAO,EAAE,MAAM;IAE7B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAoB/C,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,SAAS;CASlB;AAKD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAKjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,EAAE,CAErD;AAGD,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,KAAK,kCAAkC,EACvC,KAAK,qBAAqB,EAC1B,KAAK,iCAAiC,EACtC,KAAK,+BAA+B,GACrC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,8BAA8B,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtF,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAG1E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGrD,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGjF,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,aAAa,EACb,SAAS,GACV,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAG1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,YAAY,EACV,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,iCAAiC,GAClC,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/utils/index.ts"],"names":[],"mappings":"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"}
@@ -21,9 +21,44 @@ export interface BatchPreviewOptions {
21
21
  cacheTtl?: number;
22
22
  /** Whether to skip cache and force fresh previews (defaults to false) */
23
23
  skipCache?: boolean;
24
+ /**
25
+ * Cache backend for preview results.
26
+ *
27
+ * The default backend is process-local memory. It is safe for tests,
28
+ * local development, and single-process CLIs, but it is not shared
29
+ * across pods and does not survive restarts. Production services that
30
+ * cache preview URLs should provide a shared backend such as Redis or
31
+ * Postgres, and the cached URL itself must still resolve to durable
32
+ * storage rather than process-local assets.
33
+ */
34
+ cacheBackend?: PreviewCacheBackend;
24
35
  }
25
36
  /**
26
- * Clear all cached previews
37
+ * Cache entry for preview results
38
+ */
39
+ export interface PreviewCacheEntry {
40
+ previewUrl: string;
41
+ previewId: string;
42
+ timestamp: number;
43
+ /** ISO 8601 timestamp from `preview_creative.expires_at`, when provided. */
44
+ expiresAt?: string;
45
+ }
46
+ /**
47
+ * Pluggable cache backend for preview results.
48
+ *
49
+ * This cache stores references returned by `preview_creative`; it is not
50
+ * an asset store. Preview URLs placed in any cache must already be
51
+ * durable across load-balancer hops, pod restarts, and later refinement
52
+ * calls.
53
+ */
54
+ export interface PreviewCacheBackend {
55
+ get(cacheKey: string): PreviewCacheEntry | null | undefined | Promise<PreviewCacheEntry | null | undefined>;
56
+ set(cacheKey: string, entry: PreviewCacheEntry): void | Promise<void>;
57
+ delete?(cacheKey: string): void | Promise<void>;
58
+ clear?(): void | Promise<void>;
59
+ }
60
+ /**
61
+ * Clear all previews from the default process-local cache.
27
62
  */
28
63
  export declare function clearPreviewCache(): void;
29
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"preview-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/preview-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAA+C,MAAM,0BAA0B,CAAC;AAG7G;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAyDD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,OAAO,EAAE,EACnB,oBAAoB,EAAE,iBAAiB,EACvC,QAAQ,GAAE,mBAAwB,GACjC,OAAO,CAAC,aAAa,EAAE,CAAC,CAQ1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EAAE,EACjB,mBAAmB,EAAE,iBAAiB,EACtC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,aAAa,EAAE,CAAC,CAmI1B"}
1
+ {"version":3,"file":"preview-utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils/preview-utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAA+C,MAAM,0BAA0B,CAAC;AAG7G;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC5G,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAqFD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,OAAO,EAAE,EACnB,oBAAoB,EAAE,iBAAiB,EACvC,QAAQ,GAAE,mBAAwB,GACjC,OAAO,CAAC,aAAa,EAAE,CAAC,CAQ1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EAAE,EACjB,mBAAmB,EAAE,iBAAiB,EACtC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,aAAa,EAAE,CAAC,CA2I1B"}
@@ -5,10 +5,29 @@ exports.clearPreviewCache = clearPreviewCache;
5
5
  exports.batchPreviewProducts = batchPreviewProducts;
6
6
  exports.batchPreviewFormats = batchPreviewFormats;
7
7
  /**
8
- * Simple in-memory cache for preview results
9
- * Key format: `${itemType}:${formatId.agent_url}:${formatId.id}:${manifestHash}`
8
+ * Process-local in-memory cache for preview results.
9
+ *
10
+ * Development-only default: this map is not multi-pod-safe and does not
11
+ * survive process restarts. It must not be used as the backing store for
12
+ * MCPUI preview assets in production.
13
+ *
14
+ * Key format: `${formatId.agent_url}:${formatId.id}:${manifestHash}`
10
15
  */
11
16
  const previewCache = new Map();
17
+ const defaultPreviewCacheBackend = {
18
+ get(cacheKey) {
19
+ return previewCache.get(cacheKey);
20
+ },
21
+ set(cacheKey, entry) {
22
+ previewCache.set(cacheKey, entry);
23
+ },
24
+ delete(cacheKey) {
25
+ previewCache.delete(cacheKey);
26
+ },
27
+ clear() {
28
+ previewCache.clear();
29
+ },
30
+ };
12
31
  /**
13
32
  * Generate a cache key for a preview request
14
33
  */
@@ -20,16 +39,22 @@ function getCacheKey(formatId, manifest) {
20
39
  .toString(36);
21
40
  return `${formatId.agent_url}:${formatId.id}:${manifestHash}`;
22
41
  }
42
+ function hasExpiredAt(expiresAt, now) {
43
+ if (!expiresAt)
44
+ return false;
45
+ const expiresAtMs = Date.parse(expiresAt);
46
+ return Number.isNaN(expiresAtMs) ? false : expiresAtMs <= now;
47
+ }
23
48
  /**
24
49
  * Get cached preview if available and not expired
25
50
  */
26
- function getCachedPreview(cacheKey, ttl) {
27
- const entry = previewCache.get(cacheKey);
51
+ async function getCachedPreview(cacheBackend, cacheKey, ttl) {
52
+ const entry = await cacheBackend.get(cacheKey);
28
53
  if (!entry)
29
54
  return null;
30
55
  const now = Date.now();
31
- if (now - entry.timestamp > ttl) {
32
- previewCache.delete(cacheKey);
56
+ if (now - entry.timestamp > ttl || hasExpiredAt(entry.expiresAt, now)) {
57
+ await cacheBackend.delete?.(cacheKey);
33
58
  return null;
34
59
  }
35
60
  return entry;
@@ -37,18 +62,19 @@ function getCachedPreview(cacheKey, ttl) {
37
62
  /**
38
63
  * Set cached preview
39
64
  */
40
- function setCachedPreview(cacheKey, previewUrl, previewId) {
41
- previewCache.set(cacheKey, {
65
+ async function setCachedPreview(cacheBackend, cacheKey, previewUrl, previewId, expiresAt) {
66
+ await cacheBackend.set(cacheKey, {
42
67
  previewUrl,
43
68
  previewId,
69
+ expiresAt,
44
70
  timestamp: Date.now(),
45
71
  });
46
72
  }
47
73
  /**
48
- * Clear all cached previews
74
+ * Clear all previews from the default process-local cache.
49
75
  */
50
76
  function clearPreviewCache() {
51
- previewCache.clear();
77
+ defaultPreviewCacheBackend.clear?.();
52
78
  }
53
79
  /**
54
80
  * Extract preview URLs from products' `product_card` fields.
@@ -128,22 +154,29 @@ async function batchPreviewProducts(products, _creativeAgentClient, _options = {
128
154
  async function batchPreviewFormats(formats, creativeAgentClient, options = {}) {
129
155
  const cacheTtl = options.cacheTtl ?? 3600000; // 1 hour default
130
156
  const skipCache = options.skipCache ?? false;
157
+ const cacheBackend = options.cacheBackend ?? defaultPreviewCacheBackend;
131
158
  // Collect all formats that have format_card manifests
132
159
  const previewRequests = [];
133
160
  const results = [];
134
- formats.forEach(format => {
161
+ for (const format of formats) {
135
162
  if (format.format_card) {
136
163
  const cacheKey = getCacheKey(format.format_card.format_id, format.format_card.manifest);
137
164
  // Check cache first
138
165
  if (!skipCache) {
139
- const cached = getCachedPreview(cacheKey, cacheTtl);
166
+ let cached = null;
167
+ try {
168
+ cached = await getCachedPreview(cacheBackend, cacheKey, cacheTtl);
169
+ }
170
+ catch {
171
+ cached = null;
172
+ }
140
173
  if (cached) {
141
174
  results.push({
142
175
  item: format,
143
176
  previewUrl: cached.previewUrl,
144
177
  previewId: cached.previewId,
145
178
  });
146
- return;
179
+ continue;
147
180
  }
148
181
  }
149
182
  previewRequests.push({
@@ -160,7 +193,7 @@ async function batchPreviewFormats(formats, creativeAgentClient, options = {}) {
160
193
  item: format,
161
194
  });
162
195
  }
163
- });
196
+ }
164
197
  // If all were cached or none have format_card, return early
165
198
  if (previewRequests.length === 0) {
166
199
  return results;
@@ -202,13 +235,17 @@ async function batchPreviewFormats(formats, creativeAgentClient, options = {}) {
202
235
  const previewUrl = render.output_format === 'url' || render.output_format === 'both' ? render.preview_url : undefined;
203
236
  const previewId = preview.preview_id;
204
237
  if (previewUrl) {
205
- // Cache the result
206
- setCachedPreview(req.cacheKey, previewUrl, previewId);
207
238
  results.push({
208
239
  item: req.format,
209
240
  previewUrl,
210
241
  previewId,
211
242
  });
243
+ try {
244
+ await setCachedPreview(cacheBackend, req.cacheKey, previewUrl, previewId, responseData.expires_at);
245
+ }
246
+ catch {
247
+ // Preview cache is an accelerator; successful previews should still return on cache write failures.
248
+ }
212
249
  }
213
250
  else {
214
251
  results.push({
@@ -1 +1 @@
1
- {"version":3,"file":"preview-utils.js","sourceRoot":"","sources":["../../../src/lib/utils/preview-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preview-utils.js","sourceRoot":"","sources":["../../../src/lib/utils/preview-utils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * AdCP SDK library version
3
3
  */
4
- export declare const LIBRARY_VERSION = "9.0.0-beta.27";
4
+ export declare const LIBRARY_VERSION = "9.0.0-beta.28";
5
5
  /**
6
6
  * AdCP specification version this library is built for
7
7
  */
@@ -33,10 +33,10 @@ export type AdcpVersion = (typeof COMPATIBLE_ADCP_VERSIONS)[number];
33
33
  * Full version information
34
34
  */
35
35
  export declare const VERSION_INFO: {
36
- readonly library: "9.0.0-beta.27";
36
+ readonly library: "9.0.0-beta.28";
37
37
  readonly adcp: "3.1.0-rc.10";
38
38
  readonly compatibleVersions: readonly ["v2.5", "v2.6", "v3", "3.0.0-beta.1", "3.0-beta.1", "3.0-beta", "3.0.0-beta.3", "3.0-beta.3", "3.1.0-beta.1", "3.1-beta.1", "3.1-beta", "3.1.0-beta.2", "3.1-beta.2", "3.1.0-beta.3", "3.1-beta.3", "3.1.0-beta.5", "3.1-beta.5", "3.1.0-beta.7", "3.1-beta.7", "3.1.0-rc.1", "3.1-rc.1", "3.1-rc", "3.1.0-rc.2", "3.1-rc.2", "3.1.0-rc.3", "3.1-rc.3", "3.1.0-rc.4", "3.1-rc.4", "3.1.0-rc.6", "3.1-rc.6", "3.1.0-rc.7", "3.1-rc.7", "3.1.0-rc.8", "3.1-rc.8", "3.1.0-rc.9", "3.1-rc.9", "3.1.0-rc.10", "3.1-rc.10", "3.0.0", "3.0.1", "3.0.2", "3.0.3", "3.0.4", "3.0.5", "3.0.6", "3.0.7", "3.0.8", "3.0.9", "3.0.10", "3.0.11", "3.0.12"];
39
- readonly generatedAt: "2026-06-07T22:02:26.309Z";
39
+ readonly generatedAt: "2026-06-10T18:40:37.777Z";
40
40
  };
41
41
  /**
42
42
  * Get the AdCP specification version this library is built for
@@ -12,7 +12,7 @@ exports.toReleasePrecisionVersion = toReleasePrecisionVersion;
12
12
  /**
13
13
  * AdCP SDK library version
14
14
  */
15
- exports.LIBRARY_VERSION = '9.0.0-beta.27';
15
+ exports.LIBRARY_VERSION = '9.0.0-beta.28';
16
16
  /**
17
17
  * AdCP specification version this library is built for
18
18
  */
@@ -87,10 +87,10 @@ exports.COMPATIBLE_ADCP_VERSIONS = [
87
87
  * Full version information
88
88
  */
89
89
  exports.VERSION_INFO = {
90
- library: '9.0.0-beta.27',
90
+ library: '9.0.0-beta.28',
91
91
  adcp: '3.1.0-rc.10',
92
92
  compatibleVersions: exports.COMPATIBLE_ADCP_VERSIONS,
93
- generatedAt: '2026-06-07T22:02:26.309Z',
93
+ generatedAt: '2026-06-10T18:40:37.777Z',
94
94
  };
95
95
  /**
96
96
  * Get the AdCP specification version this library is built for
@@ -493,7 +493,7 @@ Modes per side: `'strict' | 'warn' | 'off'`. Default is `'off'` — enable expli
493
493
 
494
494
  **Note on MCP `tools/list` introspection**: `@adcp/sdk` agents register framework tools with a passthrough input schema so the framework AJV validator is authoritative on both MCP and A2A (see [#909](https://github.com/adcontextprotocol/adcp-client/issues/909)). One visible consequence: MCP `tools/list` publishes `{ type: 'object', properties: {}, additionalProperties: {} }` for every framework tool — not the per-tool parameter schema. Generic MCP discovery clients that lean on `tools/list` inputSchema for field-level introspection will see an untyped surface. AdCP-native discovery via `get_adcp_capabilities` is unaffected; upstream [adcp#3057](https://github.com/adcontextprotocol/adcp/issues/3057) proposes a `get_schema` capability tool for per-tool shape discovery across transports.
495
495
 
496
- The same validator runs on the `AdcpClient` side — storyboards and third-party clients configure it via `validation: { requests, responses }` on the client config. Request default is `warn` (so existing callers that send partial payloads still work); response default is `strict` in dev/test, `warn` in production. Set either side to `'off'` for zero overhead.
496
+ The same validator runs on the `AdcpClient` side — storyboards and third-party clients configure it via `validation: { requests, responses }` on the client config. Request default is `warn` (so existing callers that send partial payloads still work); response default is `strict` in dev/test, `warn` in production. Set either side to `'off'` for zero overhead. Protocol feature preflights are separate from schema validation; the client may still reject request controls that are known to be incompatible with the configured AdCP version before dispatch.
497
497
 
498
498
  ### Request Signing
499
499
 
@@ -0,0 +1,157 @@
1
+ # Preview asset durability
2
+
3
+ Creative workflows often return `preview_creative` renders as MCPUI preview
4
+ URLs while the buyer is still iterating. Those URLs are part of the workflow
5
+ contract: a browser, MCPUI host, later refinement call, or reviewer may fetch
6
+ them after the tool call has returned and after a load balancer has routed the
7
+ request to another process.
8
+
9
+ If a preview URL depends on process-local state, it will fail in multi-pod
10
+ deployments. A common failure mode is:
11
+
12
+ 1. Pod A generates a draft creative and returns
13
+ `/creative-sessions/{sessionId}/variants/{variantId}/assets/{assetId}`.
14
+ 2. The browser or MCPUI host fetches that URL through the load balancer.
15
+ 3. Pod B receives the request but does not have Pod A's in-memory session map.
16
+ 4. The preview 404s even though the original tool call succeeded.
17
+
18
+ ## TL;DR
19
+
20
+ - `preview_url` values should resolve through durable storage in production.
21
+ - In-memory maps are fine for local development and single-process demos, but
22
+ not for multi-pod services.
23
+ - Treat draft bytes, hosted preview artifacts, and final campaign manifests as
24
+ separate lifecycle stages.
25
+ - A cache of preview metadata is not an asset store. Cache entries may point at
26
+ durable URLs; they must not be the only place the asset exists.
27
+
28
+ ## Three lifecycle stages
29
+
30
+ ### 1. Inline draft bytes
31
+
32
+ Use inline bytes only for small, immediate draft work: model output that has not
33
+ yet been accepted, transformed, or reviewed. Inline bytes are convenient inside
34
+ one request, but they should not be the only representation behind a URL that
35
+ will be fetched later.
36
+
37
+ Good uses:
38
+
39
+ - passing a just-generated image to a renderer in the same process
40
+ - holding a short-lived thumbnail while deciding whether to persist it
41
+ - returning `preview_html` with `bothRender` when the host also receives a
42
+ durable `preview_url`
43
+
44
+ Avoid:
45
+
46
+ - returning a URL that can only be resolved from an in-memory `Map`
47
+ - assuming sticky sessions will always route follow-up fetches to the creator
48
+ process
49
+
50
+ ### 2. Hosted preview artifact
51
+
52
+ A hosted preview artifact is the durable resource behind `preview_url`. Store
53
+ the bytes in object storage, a database blob table, or another shared backing
54
+ service. Store the session and variant metadata in a durable index such as
55
+ Postgres so follow-up calls can resolve lineage, selection state, evaluator
56
+ notes, and current/final flags.
57
+
58
+ Recommended shape:
59
+
60
+ - object storage holds large asset bytes
61
+ - Postgres or another durable database holds session, variant, asset, and
62
+ review metadata
63
+ - preview routes resolve by opaque IDs and stream bytes from shared storage
64
+ - URLs remain valid long enough for review, refinement, and finalization
65
+
66
+ The URL can still be short-lived if it is re-mintable from durable metadata. For
67
+ example, a route may authenticate the caller and redirect to a signed object
68
+ storage URL. The critical property is that any pod can perform that lookup.
69
+
70
+ ### 3. Final campaign creative manifest
71
+
72
+ The final creative manifest is the serving artifact that moves into the campaign
73
+ or ad server workflow. It should reference approved assets and serving tags, not
74
+ an arbitrary draft cache entry. Keep the draft/session lifecycle separate so a
75
+ buyer can iterate without accidentally promoting every preview asset into a
76
+ campaign creative.
77
+
78
+ ## Preview cache vs asset store
79
+
80
+ `src/lib/utils/preview-utils.ts` includes a default process-local cache for
81
+ batch preview helpers. That cache stores the result of `preview_creative`; it is
82
+ not a durable asset store and is not shared across pods.
83
+
84
+ Production services that cache preview results should pass a shared
85
+ `PreviewCacheBackend`:
86
+
87
+ ```ts
88
+ import { batchPreviewFormats, type PreviewCacheBackend } from '@adcp/sdk';
89
+ import type { RedisClientType } from 'redis';
90
+
91
+ function redisPreviewCache(redis: RedisClientType): PreviewCacheBackend {
92
+ return {
93
+ get: key => redis.get(key).then(raw => (raw ? JSON.parse(raw) : null)),
94
+ set: async (key, entry) => {
95
+ const ttlSeconds = entry.expiresAt
96
+ ? Math.max(1, Math.floor((Date.parse(entry.expiresAt) - Date.now()) / 1000))
97
+ : 3600;
98
+ await redis.set(key, JSON.stringify(entry), { EX: ttlSeconds });
99
+ },
100
+ delete: async key => {
101
+ await redis.del(key);
102
+ },
103
+ };
104
+ }
105
+
106
+ const previews = await batchPreviewFormats(formats, creativeAgentClient, {
107
+ cacheBackend: redisPreviewCache(redis),
108
+ });
109
+ ```
110
+
111
+ Only cache references that already resolve durably. If the cached `previewUrl`
112
+ points at process-local bytes, a shared cache only makes the broken reference
113
+ available to more callers.
114
+
115
+ ## `preview_creative` response guidance
116
+
117
+ Return `urlRender` or `bothRender` when the preview needs to be opened by a
118
+ browser or MCPUI host. `htmlRender` alone is only appropriate when the caller can
119
+ use inline HTML directly and no later fetch is required.
120
+
121
+ For `urlRender` and `bothRender`, make sure `preview_url` is backed by a durable
122
+ route:
123
+
124
+ ```ts
125
+ import { previewCreative, urlRender } from '@adcp/sdk';
126
+
127
+ return previewCreative.single({
128
+ previews: [
129
+ {
130
+ preview_id: variant.id,
131
+ renders: [
132
+ urlRender({
133
+ render_id: variant.primaryRenderId,
134
+ role: 'primary',
135
+ preview_url: `https://creative.example/previews/${variant.assetId}`,
136
+ }),
137
+ ],
138
+ },
139
+ ],
140
+ });
141
+ ```
142
+
143
+ The route should be able to resolve `variant.assetId` from shared storage from
144
+ any pod. Do not require the serving process to have created the variant in the
145
+ same process lifetime.
146
+
147
+ ## Checklist
148
+
149
+ - Store creative session metadata durably before returning a preview URL.
150
+ - Store large preview bytes in shared storage, or make them re-mintable from a
151
+ durable source of truth.
152
+ - Make preview asset IDs opaque; do not expose filesystem paths or internal
153
+ storage keys directly.
154
+ - Treat memory caches as accelerators only. A cache miss should rehydrate from
155
+ durable storage or return a real not-found/error state.
156
+ - Test with at least two app instances and route the fetch to a different
157
+ instance than the one that generated the preview.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adcp/sdk",
3
- "version": "9.0.0-beta.27",
3
+ "version": "9.0.0-beta.28",
4
4
  "description": "AdCP SDK — client, server, and compliance harnesses for the AdContext Protocol (MCP + A2A)",
5
5
  "workspaces": [
6
6
  ".",
@@ -274,6 +274,7 @@
274
274
  "docs/llms.txt",
275
275
  "docs/guides/BUILD-AN-AGENT.md",
276
276
  "docs/guides/CANONICAL-REFERENCE-RESOLVER.md",
277
+ "docs/guides/PREVIEW-ASSET-DURABILITY.md",
277
278
  "examples/**/*",
278
279
  "AGENTS.md",
279
280
  "README.md",
@@ -53,6 +53,8 @@ Both run with `NoAccountCtx<TCtxMeta>` — they don't carry an authenticated acc
53
53
 
54
54
  `preview_creative` should return `urlRender` or `bothRender`, **not `htmlRender` alone**. The creative-template storyboard asserts `previews[0].renders[0].preview_url` is renderable. If your platform can host a preview URL, use `urlRender`. If you only have inline HTML, use `bothRender` (emit both `preview_url` and `preview_html`).
55
55
 
56
+ Preview URLs must resolve from durable storage in production; do not back MCPUI preview links with pod-local in-memory maps except in local demos. If you fork `hello_creative_adapter_template.ts`, replace the mock upstream `preview_url` plumbing with a route that reads preview bytes and session metadata from shared storage before shipping. See [`docs/guides/PREVIEW-ASSET-DURABILITY.md`](../../docs/guides/PREVIEW-ASSET-DURABILITY.md).
57
+
56
58
  ## Specialism deltas at a glance
57
59
 
58
60
  The fork targets cover the baseline + specialism deltas. Quick reference for what each archetype needs that the others don't: