@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.
- package/AGENTS.md +2 -0
- package/bin/adcp.js +3 -1
- package/dist/lib/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.d.ts +8 -0
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +15 -0
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/errors/index.d.ts +54 -0
- package/dist/lib/errors/index.d.ts.map +1 -1
- package/dist/lib/errors/index.js +132 -1
- package/dist/lib/errors/index.js.map +1 -1
- package/dist/lib/index.d.ts +6 -4
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +39 -9
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/media-buy/available-actions.d.ts +60 -0
- package/dist/lib/media-buy/available-actions.d.ts.map +1 -0
- package/dist/lib/media-buy/available-actions.js +112 -0
- package/dist/lib/media-buy/available-actions.js.map +1 -0
- package/dist/lib/media-buy/index.d.ts +9 -0
- package/dist/lib/media-buy/index.d.ts.map +1 -0
- package/dist/lib/media-buy/index.js +36 -0
- package/dist/lib/media-buy/index.js.map +1 -0
- package/dist/lib/media-buy/preflight.d.ts +118 -0
- package/dist/lib/media-buy/preflight.d.ts.map +1 -0
- package/dist/lib/media-buy/preflight.js +376 -0
- package/dist/lib/media-buy/preflight.js.map +1 -0
- package/dist/lib/media-buy/types.d.ts +113 -0
- package/dist/lib/media-buy/types.d.ts.map +1 -0
- package/dist/lib/media-buy/types.js +25 -0
- package/dist/lib/media-buy/types.js.map +1 -0
- package/dist/lib/media-buy/update-fields.generated.d.ts +14 -0
- package/dist/lib/media-buy/update-fields.generated.d.ts.map +1 -0
- package/dist/lib/media-buy/update-fields.generated.js +137 -0
- package/dist/lib/media-buy/update-fields.generated.js.map +1 -0
- package/dist/lib/protocols/mcp.d.ts.map +1 -1
- package/dist/lib/protocols/mcp.js +63 -4
- package/dist/lib/protocols/mcp.js.map +1 -1
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/server/ctx-metadata/backends/pg.d.ts +12 -3
- package/dist/lib/server/ctx-metadata/backends/pg.d.ts.map +1 -1
- package/dist/lib/server/ctx-metadata/backends/pg.js +59 -23
- package/dist/lib/server/ctx-metadata/backends/pg.js.map +1 -1
- package/dist/lib/server/ctx-metadata/backends/redis.d.ts +163 -0
- package/dist/lib/server/ctx-metadata/backends/redis.d.ts.map +1 -0
- package/dist/lib/server/ctx-metadata/backends/redis.js +204 -0
- package/dist/lib/server/ctx-metadata/backends/redis.js.map +1 -0
- package/dist/lib/server/ctx-metadata/index.d.ts +2 -0
- package/dist/lib/server/ctx-metadata/index.d.ts.map +1 -1
- package/dist/lib/server/ctx-metadata/index.js +3 -1
- package/dist/lib/server/ctx-metadata/index.js.map +1 -1
- package/dist/lib/server/decisioning/account.d.ts +27 -0
- package/dist/lib/server/decisioning/account.d.ts.map +1 -1
- package/dist/lib/server/decisioning/account.js.map +1 -1
- package/dist/lib/server/decisioning/context.d.ts +65 -0
- package/dist/lib/server/decisioning/context.d.ts.map +1 -1
- package/dist/lib/server/decisioning/runtime/from-platform.js +59 -58
- package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -1
- package/dist/lib/server/decisioning/runtime/to-context.d.ts +1 -1
- package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -1
- package/dist/lib/server/decisioning/runtime/to-context.js +2 -1
- package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -1
- package/dist/lib/server/idempotency/backends/redis.d.ts +171 -0
- package/dist/lib/server/idempotency/backends/redis.d.ts.map +1 -0
- package/dist/lib/server/idempotency/backends/redis.js +253 -0
- package/dist/lib/server/idempotency/backends/redis.js.map +1 -0
- package/dist/lib/server/idempotency/index.d.ts +2 -0
- package/dist/lib/server/idempotency/index.d.ts.map +1 -1
- package/dist/lib/server/idempotency/index.js +3 -1
- package/dist/lib/server/idempotency/index.js.map +1 -1
- package/dist/lib/server/idempotency/store.d.ts +44 -0
- package/dist/lib/server/idempotency/store.d.ts.map +1 -1
- package/dist/lib/server/idempotency/store.js.map +1 -1
- package/dist/lib/server/index.d.ts +4 -4
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js +3 -1
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/signing/jwks-helpers.d.ts +8 -1
- package/dist/lib/signing/jwks-helpers.d.ts.map +1 -1
- package/dist/lib/signing/jwks-helpers.js.map +1 -1
- package/dist/lib/signing/redis-replay-store.d.ts +180 -0
- package/dist/lib/signing/redis-replay-store.d.ts.map +1 -0
- package/dist/lib/signing/redis-replay-store.js +270 -0
- package/dist/lib/signing/redis-replay-store.js.map +1 -0
- package/dist/lib/signing/server.d.ts +1 -0
- package/dist/lib/signing/server.d.ts.map +1 -1
- package/dist/lib/signing/server.js +4 -2
- package/dist/lib/signing/server.js.map +1 -1
- package/dist/lib/signing/signer.d.ts +22 -1
- package/dist/lib/signing/signer.d.ts.map +1 -1
- package/dist/lib/signing/signer.js +5 -16
- package/dist/lib/signing/signer.js.map +1 -1
- package/dist/lib/signing/testing.d.ts +4 -3
- package/dist/lib/signing/testing.d.ts.map +1 -1
- package/dist/lib/signing/testing.js +6 -1
- package/dist/lib/signing/testing.js.map +1 -1
- package/dist/lib/testing/storyboard/agent-routing.d.ts +20 -3
- package/dist/lib/testing/storyboard/agent-routing.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/agent-routing.js +60 -10
- package/dist/lib/testing/storyboard/agent-routing.js.map +1 -1
- package/dist/lib/testing/storyboard/default-invariants.js +111 -59
- package/dist/lib/testing/storyboard/default-invariants.js.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/grader.d.ts +24 -10
- package/dist/lib/testing/storyboard/request-signing/grader.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/request-signing/grader.js +123 -29
- package/dist/lib/testing/storyboard/request-signing/grader.js.map +1 -1
- package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/runner.js +13 -0
- package/dist/lib/testing/storyboard/runner.js.map +1 -1
- package/dist/lib/testing/storyboard/types.d.ts +85 -2
- package/dist/lib/testing/storyboard/types.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/types.js.map +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/validations.js +41 -22
- package/dist/lib/testing/storyboard/validations.js.map +1 -1
- package/dist/lib/utils/redis-default-prefix-warn.d.ts +60 -0
- package/dist/lib/utils/redis-default-prefix-warn.d.ts.map +1 -0
- package/dist/lib/utils/redis-default-prefix-warn.js +95 -0
- package/dist/lib/utils/redis-default-prefix-warn.js.map +1 -0
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- 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":";AAAA;;;;;;;;;;;;GAYG;;;
|
|
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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"}
|