@adcp/sdk 7.7.0 → 7.9.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 (122) hide show
  1. package/AGENTS.md +2 -0
  2. package/bin/adcp.js +3 -1
  3. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  4. package/dist/lib/core/SingleAgentClient.d.ts +8 -0
  5. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  6. package/dist/lib/core/SingleAgentClient.js +15 -0
  7. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  8. package/dist/lib/errors/index.d.ts +54 -0
  9. package/dist/lib/errors/index.d.ts.map +1 -1
  10. package/dist/lib/errors/index.js +132 -1
  11. package/dist/lib/errors/index.js.map +1 -1
  12. package/dist/lib/index.d.ts +6 -4
  13. package/dist/lib/index.d.ts.map +1 -1
  14. package/dist/lib/index.js +39 -9
  15. package/dist/lib/index.js.map +1 -1
  16. package/dist/lib/media-buy/available-actions.d.ts +60 -0
  17. package/dist/lib/media-buy/available-actions.d.ts.map +1 -0
  18. package/dist/lib/media-buy/available-actions.js +112 -0
  19. package/dist/lib/media-buy/available-actions.js.map +1 -0
  20. package/dist/lib/media-buy/index.d.ts +9 -0
  21. package/dist/lib/media-buy/index.d.ts.map +1 -0
  22. package/dist/lib/media-buy/index.js +36 -0
  23. package/dist/lib/media-buy/index.js.map +1 -0
  24. package/dist/lib/media-buy/preflight.d.ts +118 -0
  25. package/dist/lib/media-buy/preflight.d.ts.map +1 -0
  26. package/dist/lib/media-buy/preflight.js +376 -0
  27. package/dist/lib/media-buy/preflight.js.map +1 -0
  28. package/dist/lib/media-buy/types.d.ts +113 -0
  29. package/dist/lib/media-buy/types.d.ts.map +1 -0
  30. package/dist/lib/media-buy/types.js +25 -0
  31. package/dist/lib/media-buy/types.js.map +1 -0
  32. package/dist/lib/media-buy/update-fields.generated.d.ts +14 -0
  33. package/dist/lib/media-buy/update-fields.generated.d.ts.map +1 -0
  34. package/dist/lib/media-buy/update-fields.generated.js +137 -0
  35. package/dist/lib/media-buy/update-fields.generated.js.map +1 -0
  36. package/dist/lib/protocols/mcp.d.ts.map +1 -1
  37. package/dist/lib/protocols/mcp.js +63 -4
  38. package/dist/lib/protocols/mcp.js.map +1 -1
  39. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  40. package/dist/lib/server/ctx-metadata/backends/pg.d.ts +12 -3
  41. package/dist/lib/server/ctx-metadata/backends/pg.d.ts.map +1 -1
  42. package/dist/lib/server/ctx-metadata/backends/pg.js +59 -23
  43. package/dist/lib/server/ctx-metadata/backends/pg.js.map +1 -1
  44. package/dist/lib/server/ctx-metadata/backends/redis.d.ts +163 -0
  45. package/dist/lib/server/ctx-metadata/backends/redis.d.ts.map +1 -0
  46. package/dist/lib/server/ctx-metadata/backends/redis.js +204 -0
  47. package/dist/lib/server/ctx-metadata/backends/redis.js.map +1 -0
  48. package/dist/lib/server/ctx-metadata/index.d.ts +2 -0
  49. package/dist/lib/server/ctx-metadata/index.d.ts.map +1 -1
  50. package/dist/lib/server/ctx-metadata/index.js +3 -1
  51. package/dist/lib/server/ctx-metadata/index.js.map +1 -1
  52. package/dist/lib/server/decisioning/account.d.ts +27 -0
  53. package/dist/lib/server/decisioning/account.d.ts.map +1 -1
  54. package/dist/lib/server/decisioning/account.js.map +1 -1
  55. package/dist/lib/server/decisioning/context.d.ts +65 -0
  56. package/dist/lib/server/decisioning/context.d.ts.map +1 -1
  57. package/dist/lib/server/decisioning/runtime/from-platform.js +59 -58
  58. package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
  59. package/dist/lib/server/decisioning/runtime/to-context.d.ts +1 -1
  60. package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -1
  61. package/dist/lib/server/decisioning/runtime/to-context.js +2 -1
  62. package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -1
  63. package/dist/lib/server/idempotency/backends/redis.d.ts +171 -0
  64. package/dist/lib/server/idempotency/backends/redis.d.ts.map +1 -0
  65. package/dist/lib/server/idempotency/backends/redis.js +253 -0
  66. package/dist/lib/server/idempotency/backends/redis.js.map +1 -0
  67. package/dist/lib/server/idempotency/index.d.ts +2 -0
  68. package/dist/lib/server/idempotency/index.d.ts.map +1 -1
  69. package/dist/lib/server/idempotency/index.js +3 -1
  70. package/dist/lib/server/idempotency/index.js.map +1 -1
  71. package/dist/lib/server/idempotency/store.d.ts +44 -0
  72. package/dist/lib/server/idempotency/store.d.ts.map +1 -1
  73. package/dist/lib/server/idempotency/store.js.map +1 -1
  74. package/dist/lib/server/index.d.ts +4 -4
  75. package/dist/lib/server/index.d.ts.map +1 -1
  76. package/dist/lib/server/index.js +3 -1
  77. package/dist/lib/server/index.js.map +1 -1
  78. package/dist/lib/signing/jwks-helpers.d.ts +8 -1
  79. package/dist/lib/signing/jwks-helpers.d.ts.map +1 -1
  80. package/dist/lib/signing/jwks-helpers.js.map +1 -1
  81. package/dist/lib/signing/redis-replay-store.d.ts +180 -0
  82. package/dist/lib/signing/redis-replay-store.d.ts.map +1 -0
  83. package/dist/lib/signing/redis-replay-store.js +270 -0
  84. package/dist/lib/signing/redis-replay-store.js.map +1 -0
  85. package/dist/lib/signing/server.d.ts +1 -0
  86. package/dist/lib/signing/server.d.ts.map +1 -1
  87. package/dist/lib/signing/server.js +4 -2
  88. package/dist/lib/signing/server.js.map +1 -1
  89. package/dist/lib/signing/signer.d.ts +22 -1
  90. package/dist/lib/signing/signer.d.ts.map +1 -1
  91. package/dist/lib/signing/signer.js +5 -16
  92. package/dist/lib/signing/signer.js.map +1 -1
  93. package/dist/lib/signing/testing.d.ts +4 -3
  94. package/dist/lib/signing/testing.d.ts.map +1 -1
  95. package/dist/lib/signing/testing.js +6 -1
  96. package/dist/lib/signing/testing.js.map +1 -1
  97. package/dist/lib/testing/storyboard/agent-routing.d.ts +20 -3
  98. package/dist/lib/testing/storyboard/agent-routing.d.ts.map +1 -1
  99. package/dist/lib/testing/storyboard/agent-routing.js +60 -10
  100. package/dist/lib/testing/storyboard/agent-routing.js.map +1 -1
  101. package/dist/lib/testing/storyboard/default-invariants.js +111 -59
  102. package/dist/lib/testing/storyboard/default-invariants.js.map +1 -1
  103. package/dist/lib/testing/storyboard/request-signing/grader.d.ts +24 -10
  104. package/dist/lib/testing/storyboard/request-signing/grader.d.ts.map +1 -1
  105. package/dist/lib/testing/storyboard/request-signing/grader.js +123 -29
  106. package/dist/lib/testing/storyboard/request-signing/grader.js.map +1 -1
  107. package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
  108. package/dist/lib/testing/storyboard/runner.js +13 -0
  109. package/dist/lib/testing/storyboard/runner.js.map +1 -1
  110. package/dist/lib/testing/storyboard/types.d.ts +85 -2
  111. package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
  112. package/dist/lib/testing/storyboard/types.js.map +1 -1
  113. package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
  114. package/dist/lib/testing/storyboard/validations.js +41 -22
  115. package/dist/lib/testing/storyboard/validations.js.map +1 -1
  116. package/dist/lib/utils/redis-default-prefix-warn.d.ts +60 -0
  117. package/dist/lib/utils/redis-default-prefix-warn.d.ts.map +1 -0
  118. package/dist/lib/utils/redis-default-prefix-warn.js +95 -0
  119. package/dist/lib/utils/redis-default-prefix-warn.js.map +1 -0
  120. package/dist/lib/version.d.ts +3 -3
  121. package/dist/lib/version.js +3 -3
  122. package/package.json +8 -2
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Redis backend for `CtxMetadataStore`.
3
+ *
4
+ * Stores one key per `(account_id, kind, id)` carrying the JSON payload
5
+ * `{ value, resource?, expiresAt? }`. Entries with no `expiresAt` have
6
+ * no Redis TTL — ctx-metadata lifetimes can be months (a media buy can
7
+ * run all year), and silent eviction would produce "package not found"
8
+ * errors that look like publisher bugs and run for weeks.
9
+ *
10
+ * **TTL semantics.** When `entry.expiresAt` is set, the backend stores
11
+ * the key with `EX = expiresAt - now + expiredGraceSeconds` (default
12
+ * 60s grace) so the store layer's own expiry check (`entry.expiresAt <
13
+ * now`) can still run on values within the grace window. When
14
+ * `entry.expiresAt` is absent, the key is stored with no TTL — durable
15
+ * by default, matches the pg backend's `expires_at NULL` semantic.
16
+ *
17
+ * **`bulkGet` uses `MGET`.** Single round trip for any batch size,
18
+ * unlike the looped-`GET` fallback. Adopters using an escape-hatch
19
+ * `RedisLikeClient` adapter MUST implement `mGet` for batch shapes
20
+ * (`get_products` with N products, `create_media_buy` carrying a
21
+ * package list referencing products by ID).
22
+ *
23
+ * **`clearAll` intentionally omitted.** Same rationale as the
24
+ * idempotency Redis backend — a shared Redis is a production resource,
25
+ * and a compliance-reset `FLUSHDB` would nuke unrelated keys. Tests
26
+ * against a dedicated db index (`REDIS_URL=…/15`) call `FLUSHDB`
27
+ * themselves.
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * import { createClient } from 'redis';
32
+ * import { createCtxMetadataStore, redisCtxMetadataStore } from '@adcp/sdk/server';
33
+ *
34
+ * const client = createClient({ url: process.env.REDIS_URL });
35
+ * client.on('error', (err) => console.error('redis error', err));
36
+ * await client.connect();
37
+ *
38
+ * const ctxMetadata = createCtxMetadataStore({
39
+ * backend: redisCtxMetadataStore(client),
40
+ * });
41
+ * ```
42
+ */
43
+ import type { CtxMetadataBackend } from '../store';
44
+ import type { RedisClientType } from 'redis';
45
+ /**
46
+ * Escape-hatch interface for adopters not using the official `redis`
47
+ * client (node-redis v4/v5). Mirrors the methods this backend calls.
48
+ *
49
+ * `mGet` matches node-redis's batch-get shape (single round trip).
50
+ * `ioredis` exposes `mget(keys)` which returns `(string | null)[]` in
51
+ * the same order — the shim is one line.
52
+ *
53
+ * @example ioredis adapter
54
+ * ```typescript
55
+ * import Redis from 'ioredis';
56
+ * const ioredis = new Redis(process.env.REDIS_URL!);
57
+ *
58
+ * const client: CtxMetadataRedisLikeClient = {
59
+ * get: (k) => ioredis.get(k),
60
+ * mGet: (keys) => ioredis.mget(keys),
61
+ * set: (k, v, opts) =>
62
+ * opts?.EX !== undefined
63
+ * ? ioredis.set(k, v, 'EX', opts.EX)
64
+ * : ioredis.set(k, v),
65
+ * del: (k) => ioredis.del(k as string),
66
+ * ping: () => ioredis.ping(),
67
+ * };
68
+ * ```
69
+ */
70
+ export interface CtxMetadataRedisLikeClient {
71
+ get(key: string): Promise<string | null>;
72
+ mGet(keys: string[]): Promise<(string | null)[]>;
73
+ set(key: string, value: string, options?: {
74
+ EX?: number;
75
+ }): Promise<string | null>;
76
+ del(key: string | string[]): Promise<number>;
77
+ ping(): Promise<string>;
78
+ }
79
+ /**
80
+ * Accepted client shape: either a real `redis` (node-redis v4/v5)
81
+ * `RedisClientType` (the typical path — pass `createClient(...)`
82
+ * straight in) or an adapter conforming to `CtxMetadataRedisLikeClient`
83
+ * for non-node-redis clients (ioredis, Upstash, test doubles).
84
+ */
85
+ export type CtxMetadataRedisBackendClient = RedisClientType<any, any, any> | CtxMetadataRedisLikeClient;
86
+ export interface RedisCtxMetadataBackendOptions {
87
+ /**
88
+ * Key prefix prepended to every scoped key written to Redis. Defaults
89
+ * to `"adcp:ctx_meta:"`.
90
+ *
91
+ * **Sharing a Redis db across deployments? Override this.** The
92
+ * default is fine for a dedicated Redis (or a dedicated db index).
93
+ * Two AdCP servers sharing the same db with the same default prefix
94
+ * collide on any overlapping `accountId` — the per-tenant scope
95
+ * segment can't carry deployment isolation on its own. Set a
96
+ * deployment-unique prefix (`"adcp:ctx_meta:prod-eu:"`, etc.) or use
97
+ * separate Redis dbs.
98
+ */
99
+ keyPrefix?: string;
100
+ /**
101
+ * How many seconds past `entry.expiresAt` to keep the key alive in
102
+ * Redis so the store layer's expiry check (`entry.expiresAt < now`)
103
+ * can still observe the value within a clock-skew window. Defaults
104
+ * to 60s.
105
+ *
106
+ * Only applies to entries with an `expiresAt`; entries without one
107
+ * are stored with no TTL (durable by design).
108
+ */
109
+ expiredGraceSeconds?: number;
110
+ /**
111
+ * Suppress the one-time `console.warn` emitted at construction when
112
+ * the default `keyPrefix` is used against a node-redis client on db
113
+ * 0. Set to `true` if you know your Redis is dedicated to this
114
+ * deployment. The recommended fix is to set `keyPrefix` explicitly,
115
+ * not to suppress.
116
+ */
117
+ suppressDefaultPrefixWarning?: boolean;
118
+ }
119
+ /**
120
+ * Create a Redis-backed ctx-metadata cache.
121
+ *
122
+ * **Startup probe.** Call `store.probe()` before serving traffic to
123
+ * catch a bad `REDIS_URL` at boot rather than on the first
124
+ * ctx_metadata write.
125
+ *
126
+ * **Client error handling.** node-redis emits errors on the client
127
+ * itself for transient connection drops. Without a listener, Node's
128
+ * `EventEmitter` default-throws and crashes the process. Add one in
129
+ * your bootstrap:
130
+ *
131
+ * ```ts
132
+ * client.on('error', (err) => console.error('redis error', err));
133
+ * ```
134
+ *
135
+ * **Redis memory policy — set this on the deployment.** ctx_metadata
136
+ * entries default to durable (no TTL) when no `expiresAt` is provided,
137
+ * matching the pg sibling's `expires_at = NULL` semantic. Without a
138
+ * memory policy, an adopter who writes many durable entries can
139
+ * pressure Redis memory; once `maxmemory` is hit, default `noeviction`
140
+ * makes new writes fail. Choose deliberately:
141
+ *
142
+ * - **`maxmemory-policy allkeys-lru`** on a Redis db dedicated to AdCP
143
+ * ctx_metadata — evicts the oldest entries to make room. Acceptable
144
+ * for ctx_metadata because the next call referencing the same
145
+ * resource will write a fresh entry; evicted entries are recoverable
146
+ * as publisher traffic re-derives them, not lost permanently.
147
+ * - **`maxmemory-policy volatile-lru`** if you mostly use `expiresAt`
148
+ * on entries — bounds growth to TTL'd keys only.
149
+ * - **`maxmemory-policy noeviction`** (Redis default) — fail-closed:
150
+ * writes start erroring at the limit, mutating tools fail. Pages
151
+ * you instead of silently evicting.
152
+ *
153
+ * For ctx_metadata specifically, evicting cached entries is safer than
154
+ * for the idempotency cache (which uses eviction as a feature) because
155
+ * publisher re-derivation refills the cache on the next reference.
156
+ * Note that this isn't synchronous "re-hydrate on miss" — the
157
+ * framework reads `null` for a missing entry and falls through to the
158
+ * publisher's adapter, which may or may not produce a fresh
159
+ * `ctx_metadata` value on that path. `allkeys-lru` is the recommended
160
+ * default on a dedicated db.
161
+ */
162
+ export declare function redisCtxMetadataStore(client: CtxMetadataRedisBackendClient, options?: RedisCtxMetadataBackendOptions): CtxMetadataBackend;
163
+ //# sourceMappingURL=redis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../../src/lib/server/ctx-metadata/backends/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAoB,MAAM,UAAU,CAAC;AAIrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAG7C;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACnF,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,MAAM,6BAA6B,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,0BAA0B,CAAC;AAExG,MAAM,WAAW,8BAA8B;IAC7C;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,6BAA6B,EACrC,OAAO,GAAE,8BAAmC,GAC3C,kBAAkB,CAwHpB"}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ /**
3
+ * Redis backend for `CtxMetadataStore`.
4
+ *
5
+ * Stores one key per `(account_id, kind, id)` carrying the JSON payload
6
+ * `{ value, resource?, expiresAt? }`. Entries with no `expiresAt` have
7
+ * no Redis TTL — ctx-metadata lifetimes can be months (a media buy can
8
+ * run all year), and silent eviction would produce "package not found"
9
+ * errors that look like publisher bugs and run for weeks.
10
+ *
11
+ * **TTL semantics.** When `entry.expiresAt` is set, the backend stores
12
+ * the key with `EX = expiresAt - now + expiredGraceSeconds` (default
13
+ * 60s grace) so the store layer's own expiry check (`entry.expiresAt <
14
+ * now`) can still run on values within the grace window. When
15
+ * `entry.expiresAt` is absent, the key is stored with no TTL — durable
16
+ * by default, matches the pg backend's `expires_at NULL` semantic.
17
+ *
18
+ * **`bulkGet` uses `MGET`.** Single round trip for any batch size,
19
+ * unlike the looped-`GET` fallback. Adopters using an escape-hatch
20
+ * `RedisLikeClient` adapter MUST implement `mGet` for batch shapes
21
+ * (`get_products` with N products, `create_media_buy` carrying a
22
+ * package list referencing products by ID).
23
+ *
24
+ * **`clearAll` intentionally omitted.** Same rationale as the
25
+ * idempotency Redis backend — a shared Redis is a production resource,
26
+ * and a compliance-reset `FLUSHDB` would nuke unrelated keys. Tests
27
+ * against a dedicated db index (`REDIS_URL=…/15`) call `FLUSHDB`
28
+ * themselves.
29
+ *
30
+ * @example
31
+ * ```typescript
32
+ * import { createClient } from 'redis';
33
+ * import { createCtxMetadataStore, redisCtxMetadataStore } from '@adcp/sdk/server';
34
+ *
35
+ * const client = createClient({ url: process.env.REDIS_URL });
36
+ * client.on('error', (err) => console.error('redis error', err));
37
+ * await client.connect();
38
+ *
39
+ * const ctxMetadata = createCtxMetadataStore({
40
+ * backend: redisCtxMetadataStore(client),
41
+ * });
42
+ * ```
43
+ */
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.redisCtxMetadataStore = redisCtxMetadataStore;
46
+ const redis_default_prefix_warn_1 = require("../../../utils/redis-default-prefix-warn");
47
+ const DEFAULT_KEY_PREFIX = 'adcp:ctx_meta:';
48
+ const DEFAULT_EXPIRED_GRACE_SECONDS = 60;
49
+ /**
50
+ * Create a Redis-backed ctx-metadata cache.
51
+ *
52
+ * **Startup probe.** Call `store.probe()` before serving traffic to
53
+ * catch a bad `REDIS_URL` at boot rather than on the first
54
+ * ctx_metadata write.
55
+ *
56
+ * **Client error handling.** node-redis emits errors on the client
57
+ * itself for transient connection drops. Without a listener, Node's
58
+ * `EventEmitter` default-throws and crashes the process. Add one in
59
+ * your bootstrap:
60
+ *
61
+ * ```ts
62
+ * client.on('error', (err) => console.error('redis error', err));
63
+ * ```
64
+ *
65
+ * **Redis memory policy — set this on the deployment.** ctx_metadata
66
+ * entries default to durable (no TTL) when no `expiresAt` is provided,
67
+ * matching the pg sibling's `expires_at = NULL` semantic. Without a
68
+ * memory policy, an adopter who writes many durable entries can
69
+ * pressure Redis memory; once `maxmemory` is hit, default `noeviction`
70
+ * makes new writes fail. Choose deliberately:
71
+ *
72
+ * - **`maxmemory-policy allkeys-lru`** on a Redis db dedicated to AdCP
73
+ * ctx_metadata — evicts the oldest entries to make room. Acceptable
74
+ * for ctx_metadata because the next call referencing the same
75
+ * resource will write a fresh entry; evicted entries are recoverable
76
+ * as publisher traffic re-derives them, not lost permanently.
77
+ * - **`maxmemory-policy volatile-lru`** if you mostly use `expiresAt`
78
+ * on entries — bounds growth to TTL'd keys only.
79
+ * - **`maxmemory-policy noeviction`** (Redis default) — fail-closed:
80
+ * writes start erroring at the limit, mutating tools fail. Pages
81
+ * you instead of silently evicting.
82
+ *
83
+ * For ctx_metadata specifically, evicting cached entries is safer than
84
+ * for the idempotency cache (which uses eviction as a feature) because
85
+ * publisher re-derivation refills the cache on the next reference.
86
+ * Note that this isn't synchronous "re-hydrate on miss" — the
87
+ * framework reads `null` for a missing entry and falls through to the
88
+ * publisher's adapter, which may or may not produce a fresh
89
+ * `ctx_metadata` value on that path. `allkeys-lru` is the recommended
90
+ * default on a dedicated db.
91
+ */
92
+ function redisCtxMetadataStore(client, options = {}) {
93
+ // The function calls only the methods on CtxMetadataRedisLikeClient.
94
+ // The wider RedisClientType union covers the node-redis happy path
95
+ // without forcing a cast at the call site; internally we narrow.
96
+ const c = client;
97
+ const keyPrefix = options.keyPrefix ?? DEFAULT_KEY_PREFIX;
98
+ const expiredGraceSeconds = options.expiredGraceSeconds ?? DEFAULT_EXPIRED_GRACE_SECONDS;
99
+ if (!Number.isFinite(expiredGraceSeconds) || expiredGraceSeconds < 0) {
100
+ throw new Error(`redisCtxMetadataStore: expiredGraceSeconds must be a non-negative finite number. Got ${expiredGraceSeconds}.`);
101
+ }
102
+ (0, redis_default_prefix_warn_1.maybeWarnOnSharedRedisPrefix)({
103
+ client,
104
+ callerKeyPrefix: options.keyPrefix,
105
+ defaultKeyPrefix: DEFAULT_KEY_PREFIX,
106
+ suppress: options.suppressDefaultPrefixWarning,
107
+ backendName: 'redisCtxMetadataStore',
108
+ });
109
+ function prefixed(scopedKey) {
110
+ return `${keyPrefix}${scopedKey}`;
111
+ }
112
+ /**
113
+ * Compute the Redis TTL when `expiresAt` is set. Returns `undefined`
114
+ * when no TTL should be applied (entry is durable). Throws if the
115
+ * resulting TTL would be non-positive — a logic bug at the caller.
116
+ */
117
+ function ttlFor(expiresAt) {
118
+ if (expiresAt === undefined)
119
+ return undefined;
120
+ const nowSeconds = Math.floor(Date.now() / 1000);
121
+ const ttl = Math.floor(expiresAt - nowSeconds + expiredGraceSeconds);
122
+ if (ttl <= 0) {
123
+ throw new Error(`redisCtxMetadataStore: refusing to write an entry whose expiresAt (${expiresAt}) is already past — ` +
124
+ `the substrate-level TTL would be ${ttl}s. Caller logic error.`);
125
+ }
126
+ return ttl;
127
+ }
128
+ function parseEntry(raw, scopedKey) {
129
+ let parsed;
130
+ try {
131
+ parsed = JSON.parse(raw);
132
+ }
133
+ catch (err) {
134
+ // The scoped key contains the account id — omit from the public
135
+ // message; attach the parse error as Error.cause so server logs
136
+ // retain the detail without leaking via response bodies.
137
+ void scopedKey;
138
+ throw new Error('redisCtxMetadataStore: corrupt cache entry — not valid JSON. See server logs for key + parse error.', {
139
+ cause: err,
140
+ });
141
+ }
142
+ const entry = { value: parsed.value };
143
+ if (parsed.resource !== undefined)
144
+ entry.resource = parsed.resource;
145
+ if (parsed.expiresAt !== undefined)
146
+ entry.expiresAt = parsed.expiresAt;
147
+ return entry;
148
+ }
149
+ return {
150
+ async probe() {
151
+ try {
152
+ await c.ping();
153
+ }
154
+ catch (err) {
155
+ throw new Error(`ctx_metadata backend probe failed: Redis is unreachable or misconfigured. ` +
156
+ `Check REDIS_URL and that the instance is up. See server logs for the underlying cause.`, { cause: err });
157
+ }
158
+ },
159
+ async get(scopedKey) {
160
+ const raw = await c.get(prefixed(scopedKey));
161
+ if (raw === null)
162
+ return null;
163
+ return parseEntry(raw, scopedKey);
164
+ },
165
+ async bulkGet(scopedKeys) {
166
+ if (scopedKeys.length === 0)
167
+ return new Map();
168
+ const prefixedKeys = scopedKeys.map(k => prefixed(k));
169
+ const raws = await c.mGet(prefixedKeys);
170
+ const out = new Map();
171
+ for (let i = 0; i < scopedKeys.length; i++) {
172
+ const raw = raws[i];
173
+ if (raw === null || raw === undefined)
174
+ continue;
175
+ const scopedKey = scopedKeys[i];
176
+ if (scopedKey === undefined)
177
+ continue;
178
+ out.set(scopedKey, parseEntry(raw, scopedKey));
179
+ }
180
+ return out;
181
+ },
182
+ async put(scopedKey, entry) {
183
+ const serialized = { value: entry.value };
184
+ if (entry.resource !== undefined)
185
+ serialized.resource = entry.resource;
186
+ if (entry.expiresAt !== undefined)
187
+ serialized.expiresAt = entry.expiresAt;
188
+ const ttl = ttlFor(entry.expiresAt);
189
+ const body = JSON.stringify(serialized);
190
+ if (ttl !== undefined) {
191
+ await c.set(prefixed(scopedKey), body, { EX: ttl });
192
+ }
193
+ else {
194
+ // No TTL: durable entry. Pass undefined / empty options so the
195
+ // call site is symmetric with the pg backend's `expires_at = NULL`.
196
+ await c.set(prefixed(scopedKey), body);
197
+ }
198
+ },
199
+ async delete(scopedKey) {
200
+ await c.del(prefixed(scopedKey));
201
+ },
202
+ };
203
+ }
204
+ //# sourceMappingURL=redis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../../../src/lib/server/ctx-metadata/backends/redis.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,8 @@ export { memoryCtxMetadataStore } from './backends/memory';
10
10
  export type { MemoryCtxMetadataStoreOptions } from './backends/memory';
11
11
  export { pgCtxMetadataStore, getCtxMetadataMigration, cleanupExpiredCtxMetadata, CTX_METADATA_MIGRATION, } from './backends/pg';
12
12
  export type { PgCtxMetadataBackendOptions } from './backends/pg';
13
+ export { redisCtxMetadataStore } from './backends/redis';
14
+ export type { RedisCtxMetadataBackendOptions, CtxMetadataRedisBackendClient, CtxMetadataRedisLikeClient, } from './backends/redis';
13
15
  export { stripCtxMetadata, hasCtxMetadata, stripImplementationConfig, hasImplementationConfig } from './wire-shape';
14
16
  export type { WireShape } from './wire-shape';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/ctx-metadata/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACpH,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/ctx-metadata/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,YAAY,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACpH,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * @public
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.hasImplementationConfig = exports.stripImplementationConfig = exports.hasCtxMetadata = exports.stripCtxMetadata = exports.CTX_METADATA_MIGRATION = exports.cleanupExpiredCtxMetadata = exports.getCtxMetadataMigration = exports.pgCtxMetadataStore = exports.memoryCtxMetadataStore = exports.MAX_TTL_SECONDS = exports.DEFAULT_MAX_VALUE_BYTES = exports.ADCP_INTERNAL_TAG = exports.CtxMetadataValidationError = exports.scopeCtxMetadataKey = exports.ctxMetadataResultKey = exports.createCtxMetadataStore = void 0;
9
+ exports.hasImplementationConfig = exports.stripImplementationConfig = exports.hasCtxMetadata = exports.stripCtxMetadata = exports.redisCtxMetadataStore = exports.CTX_METADATA_MIGRATION = exports.cleanupExpiredCtxMetadata = exports.getCtxMetadataMigration = exports.pgCtxMetadataStore = exports.memoryCtxMetadataStore = exports.MAX_TTL_SECONDS = exports.DEFAULT_MAX_VALUE_BYTES = exports.ADCP_INTERNAL_TAG = exports.CtxMetadataValidationError = exports.scopeCtxMetadataKey = exports.ctxMetadataResultKey = exports.createCtxMetadataStore = void 0;
10
10
  var store_1 = require("./store");
11
11
  Object.defineProperty(exports, "createCtxMetadataStore", { enumerable: true, get: function () { return store_1.createCtxMetadataStore; } });
12
12
  Object.defineProperty(exports, "ctxMetadataResultKey", { enumerable: true, get: function () { return store_1.ctxMetadataResultKey; } });
@@ -22,6 +22,8 @@ Object.defineProperty(exports, "pgCtxMetadataStore", { enumerable: true, get: fu
22
22
  Object.defineProperty(exports, "getCtxMetadataMigration", { enumerable: true, get: function () { return pg_1.getCtxMetadataMigration; } });
23
23
  Object.defineProperty(exports, "cleanupExpiredCtxMetadata", { enumerable: true, get: function () { return pg_1.cleanupExpiredCtxMetadata; } });
24
24
  Object.defineProperty(exports, "CTX_METADATA_MIGRATION", { enumerable: true, get: function () { return pg_1.CTX_METADATA_MIGRATION; } });
25
+ var redis_1 = require("./backends/redis");
26
+ Object.defineProperty(exports, "redisCtxMetadataStore", { enumerable: true, get: function () { return redis_1.redisCtxMetadataStore; } });
25
27
  var wire_shape_1 = require("./wire-shape");
26
28
  Object.defineProperty(exports, "stripCtxMetadata", { enumerable: true, get: function () { return wire_shape_1.stripCtxMetadata; } });
27
29
  Object.defineProperty(exports, "hasCtxMetadata", { enumerable: true, get: function () { return wire_shape_1.hasCtxMetadata; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/server/ctx-metadata/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,iCAQiB;AAPf,+GAAA,sBAAsB,OAAA;AACtB,6GAAA,oBAAoB,OAAA;AACpB,4GAAA,mBAAmB,OAAA;AACnB,mHAAA,0BAA0B,OAAA;AAC1B,0GAAA,iBAAiB,OAAA;AACjB,gHAAA,uBAAuB,OAAA;AACvB,wGAAA,eAAe,OAAA;AAYjB,4CAA2D;AAAlD,gHAAA,sBAAsB,OAAA;AAG/B,oCAKuB;AAJrB,wGAAA,kBAAkB,OAAA;AAClB,6GAAA,uBAAuB,OAAA;AACvB,+GAAA,yBAAyB,OAAA;AACzB,4GAAA,sBAAsB,OAAA;AAIxB,2CAAoH;AAA3G,8GAAA,gBAAgB,OAAA;AAAE,4GAAA,cAAc,OAAA;AAAE,uHAAA,yBAAyB,OAAA;AAAE,qHAAA,uBAAuB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/server/ctx-metadata/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,iCAQiB;AAPf,+GAAA,sBAAsB,OAAA;AACtB,6GAAA,oBAAoB,OAAA;AACpB,4GAAA,mBAAmB,OAAA;AACnB,mHAAA,0BAA0B,OAAA;AAC1B,0GAAA,iBAAiB,OAAA;AACjB,gHAAA,uBAAuB,OAAA;AACvB,wGAAA,eAAe,OAAA;AAYjB,4CAA2D;AAAlD,gHAAA,sBAAsB,OAAA;AAG/B,oCAKuB;AAJrB,wGAAA,kBAAkB,OAAA;AAClB,6GAAA,uBAAuB,OAAA;AACvB,+GAAA,yBAAyB,OAAA;AACzB,4GAAA,sBAAsB,OAAA;AAIxB,0CAAyD;AAAhD,8GAAA,qBAAqB,OAAA;AAO9B,2CAAoH;AAA3G,8GAAA,gBAAgB,OAAA;AAAE,4GAAA,cAAc,OAAA;AAAE,uHAAA,yBAAyB,OAAA;AAAE,qHAAA,uBAAuB,OAAA"}
@@ -258,6 +258,33 @@ export interface ResolveContext {
258
258
  * registry returns null for the request's credential.
259
259
  */
260
260
  agent?: BuyerAgent;
261
+ /**
262
+ * Un-destructured wire request envelope. Set by the framework so account
263
+ * tool handlers (`syncAccounts`, `syncGovernance`, `listAccounts`,
264
+ * `reportUsage`, `getAccountFinancials`) can read request fields the
265
+ * typed signature doesn't model — e.g. `sync_accounts.delete_missing`
266
+ * and `sync_accounts.dry_run`, which the framework destructures the
267
+ * payload array out of before calling the handler.
268
+ *
269
+ * Same shape and read-site cast pattern as `RequestContext.input` (see
270
+ * `decisioning/context.ts`). Same caveats:
271
+ *
272
+ * - **Identical reference to the typed payload arg.** This is the same
273
+ * request body object the platform method's first positional arg
274
+ * projects from. Framework auto-hydrate seams mutate this object
275
+ * before the platform method runs; treat fields the buyer sent as
276
+ * authoritative, but expect framework-injected entities (e.g.
277
+ * hydrated product / media-buy refs) to be visible here too.
278
+ * - **Buyer-controlled untrusted data.** Free-text fields (`brief`,
279
+ * `message`, creative snippets, etc.) are attacker-controlled.
280
+ * Don't log `ctx.input` wholesale — secret fields like
281
+ * `push_notification_config.token` are present on mutating requests.
282
+ * When templating into LLM prompts, validate or fence the field
283
+ * rather than string-interpolating.
284
+ *
285
+ * @public
286
+ */
287
+ input?: Readonly<Record<string, unknown>>;
261
288
  }
262
289
  /**
263
290
  * Context passed to AccountStore tool methods that operate on a single
@@ -1 +1 @@
1
- {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/account.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/account.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/account.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/account.ts"],"names":[],"mappings":"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"}
@@ -84,6 +84,71 @@ export interface RequestContext<TAccount = Account> {
84
84
  * @public
85
85
  */
86
86
  ctxMetadata?: CtxMetadataAccessor;
87
+ /**
88
+ * Request payload as the platform method sees it. The framework sets
89
+ * this on every v6 platform-method dispatch so methods can read request
90
+ * fields the typed signature doesn't model.
91
+ *
92
+ * **Why it exists.** Several `sync_*` request schemas carry modifier
93
+ * fields (`assignments[]` on `sync_creatives`; `delete_missing`,
94
+ * `dry_run`, `validation_mode` on the same; `delete_missing` on
95
+ * `sync_audiences` and `sync_accounts`) that the platform method's
96
+ * typed signature drops — the framework destructures the payload array
97
+ * and passes only that. Without `ctx.input`, adopters implementing
98
+ * those fields at the wire layer would see them silently disappear on
99
+ * the `/sales/mcp` route while working on `/mcp` — a silent-conformance
100
+ * trap. Read the field from `ctx.input` and the modifier survives to
101
+ * the adapter.
102
+ *
103
+ * **Same reference as the typed payload arg, not a snapshot.** `ctx.input`
104
+ * is set BEFORE the framework's auto-hydrate seams
105
+ * (`hydratePackagesWithProducts`, `hydrateForTool`) run, but those
106
+ * seams mutate the same object in place. By the time the platform
107
+ * method's body executes, `ctx.input` and the first positional arg are
108
+ * the same reference and both reflect framework hydration. Fields the
109
+ * buyer sent are authoritative; framework-injected entities
110
+ * (`pkg.product`, `req.media_buy`) are present too — distinguish by
111
+ * field shape, not by which path you read from.
112
+ *
113
+ * **For methods that hoist a field to a positional arg** (e.g.
114
+ * `updateMediaBuy(media_buy_id, patch, ctx)` hoists `media_buy_id` out
115
+ * of the wire envelope), that field is still present at the top level
116
+ * of `ctx.input`. `ctx.input` is NOT "what the method didn't get" — it
117
+ * is the full envelope, hoist included. Prefer reading any field
118
+ * present on both the positional arg and `ctx.input` from the
119
+ * positional arg; reach for `ctx.input` only for fields the typed
120
+ * signature drops.
121
+ *
122
+ * **Typed as unknown** to match the `comply_test_controller` bridge
123
+ * precedent (`TestControllerBridgeContext.input`) and to avoid coupling
124
+ * adopters to specific schema versions. Cast at the read site:
125
+ *
126
+ * ```ts
127
+ * syncCreatives: async (creatives, ctx) => {
128
+ * const wire = ctx.input as SyncCreativesRequest;
129
+ * if (wire.delete_missing) { ... }
130
+ * for (const assignment of wire.assignments ?? []) { ... }
131
+ * }
132
+ * ```
133
+ *
134
+ * **Security — `ctx.input` is buyer-controlled and may carry secrets.**
135
+ * Mutating-tool envelopes can include `push_notification_config.token`
136
+ * (the buyer's webhook-signature secret); `sync_*` requests can carry
137
+ * `ctx_metadata` blobs the adopter persisted on a prior turn. Do NOT
138
+ * log `ctx.input` wholesale — read named fields. Free-text fields
139
+ * (`brief` on `getProducts`, `message` on `si_send_message`, creative
140
+ * snippets, etc.) are attacker-controlled; when templating into LLM
141
+ * prompts, validate or fence — don't string-interpolate. See
142
+ * `docs/guides/CTX-METADATA-SAFETY.md` for the broader policy on
143
+ * buyer-controlled inputs.
144
+ *
145
+ * **Optional in the type signature** so adopters constructing ad-hoc
146
+ * `RequestContext` for unit tests aren't forced to set it; the
147
+ * framework always sets it on real dispatches.
148
+ *
149
+ * @public
150
+ */
151
+ input?: Readonly<Record<string, unknown>>;
87
152
  /**
88
153
  * Hydrated typed recipes (`product_id -> Recipe`) for proposal-mode
89
154
  * dispatch. Populated by the framework's v1.5 ProposalManager seams:
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/context.ts"],"names":[],"mappings":"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"}