@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,171 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Redis backend for the idempotency store.
|
|
3
|
+
*
|
|
4
|
+
* Stores one key per `(principal, key, [extraScope])` carrying the JSON
|
|
5
|
+
* payload `{ payloadHash, response, expiresAt }`. Expiry is enforced by
|
|
6
|
+
* Redis itself via the key TTL — no sweeper job required.
|
|
7
|
+
*
|
|
8
|
+
* **Reclaim semantics.** The `putIfAbsent` claim maps to `SET … NX EX`:
|
|
9
|
+
* because Redis auto-deletes expired keys, a crashed in-flight claim is
|
|
10
|
+
* naturally reclaimable on retry without the explicit `WHERE expires_at <
|
|
11
|
+
* NOW()` dance the Postgres backend needs.
|
|
12
|
+
*
|
|
13
|
+
* **`expired` vs `miss` parity.** The store layer distinguishes `expired`
|
|
14
|
+
* (cached key past TTL within clock-skew window) from `miss` (no cached
|
|
15
|
+
* key) — that affects whether the buyer sees `IDEMPOTENCY_EXPIRED` or a
|
|
16
|
+
* fresh execution. Postgres rows linger past `expires_at` until cleanup;
|
|
17
|
+
* Redis would evict them at the second they expire, collapsing `expired`
|
|
18
|
+
* into `miss`. We hold the key alive for an extra `expiredGraceSeconds`
|
|
19
|
+
* (defaults to 120s — covers the store's default 60s clock skew plus a
|
|
20
|
+
* margin) so the store layer can read `expiresAt` from the value and
|
|
21
|
+
* return `expired` correctly within the skew window.
|
|
22
|
+
*
|
|
23
|
+
* **`clearAll` intentionally omitted.** A shared Redis instance is a
|
|
24
|
+
* production resource — accidentally calling `FLUSHDB` from a compliance
|
|
25
|
+
* reset hook would nuke unrelated keys. Test setups that want a clean
|
|
26
|
+
* slate should run against a dedicated Redis db (`REDIS_URL=…/15`) and
|
|
27
|
+
* call `FLUSHDB` themselves.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { createClient } from 'redis';
|
|
32
|
+
* import { createIdempotencyStore, redisBackend } 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 store = createIdempotencyStore({
|
|
39
|
+
* backend: redisBackend(client),
|
|
40
|
+
* ttlSeconds: 86400,
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
import type { IdempotencyBackend } from '../store';
|
|
45
|
+
import type { RedisClientType } from 'redis';
|
|
46
|
+
/**
|
|
47
|
+
* Escape-hatch interface for adopters not using the official `redis`
|
|
48
|
+
* client (node-redis v4/v5) — e.g., `ioredis`, Upstash, a test double.
|
|
49
|
+
*
|
|
50
|
+
* Mirrors the four methods this backend actually calls. The `set`
|
|
51
|
+
* signature follows node-redis's options-object form; `ioredis` users
|
|
52
|
+
* pass a thin shim that maps to its positional API.
|
|
53
|
+
*
|
|
54
|
+
* @example ioredis adapter
|
|
55
|
+
* ```typescript
|
|
56
|
+
* import Redis from 'ioredis';
|
|
57
|
+
* const ioredis = new Redis(process.env.REDIS_URL!);
|
|
58
|
+
*
|
|
59
|
+
* const client: RedisLikeClient = {
|
|
60
|
+
* get: (k) => ioredis.get(k),
|
|
61
|
+
* set: (k, v, { EX, NX }) =>
|
|
62
|
+
* NX
|
|
63
|
+
* ? ioredis.set(k, v, 'EX', EX, 'NX').then(r => (r === 'OK' ? 'OK' : null))
|
|
64
|
+
* : ioredis.set(k, v, 'EX', EX),
|
|
65
|
+
* del: (k) => ioredis.del(k as string),
|
|
66
|
+
* ping: () => ioredis.ping(),
|
|
67
|
+
* };
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export interface RedisLikeClient {
|
|
71
|
+
get(key: string): Promise<string | null>;
|
|
72
|
+
set(key: string, value: string, options: {
|
|
73
|
+
EX: number;
|
|
74
|
+
NX?: boolean;
|
|
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(...)` straight
|
|
82
|
+
* in) or an adapter that conforms to `RedisLikeClient` (for `ioredis`,
|
|
83
|
+
* Upstash, or test doubles). The union avoids forcing node-redis users
|
|
84
|
+
* to write `as unknown as RedisLikeClient` casts on the documented path.
|
|
85
|
+
*/
|
|
86
|
+
export type RedisBackendClient = RedisClientType<any, any, any> | RedisLikeClient;
|
|
87
|
+
export interface RedisBackendOptions {
|
|
88
|
+
/**
|
|
89
|
+
* Key prefix prepended to every scoped key written to Redis. Defaults
|
|
90
|
+
* to `"adcp:idem:"`.
|
|
91
|
+
*
|
|
92
|
+
* **Sharing a Redis db across deployments? Override this.** The default
|
|
93
|
+
* is fine for a dedicated Redis (or a dedicated db index) and for
|
|
94
|
+
* coexisting with non-AdCP applications. But two AdCP servers sharing
|
|
95
|
+
* the *same* db with the *same* default prefix will collide on any
|
|
96
|
+
* overlapping principal namespace (e.g., both deployments having a
|
|
97
|
+
* tenant called `acme`) — the principal segment is per-tenant, not
|
|
98
|
+
* per-deployment, so it's the wrong layer to do deployment isolation.
|
|
99
|
+
* Set a deployment-unique prefix (`"adcp:idem:prod-eu:"`, etc.) or use
|
|
100
|
+
* separate Redis dbs.
|
|
101
|
+
*/
|
|
102
|
+
keyPrefix?: string;
|
|
103
|
+
/**
|
|
104
|
+
* Suppress the one-time `console.warn` emitted at construction when the
|
|
105
|
+
* default `keyPrefix` is used against a node-redis client that appears
|
|
106
|
+
* to be on db 0 (the most likely signal of a shared, non-dedicated
|
|
107
|
+
* Redis). Set to `true` if you know your Redis is dedicated to this
|
|
108
|
+
* AdCP deployment and don't want the warning noise. The recommended
|
|
109
|
+
* fix is to set `keyPrefix` explicitly, not to suppress.
|
|
110
|
+
*/
|
|
111
|
+
suppressDefaultPrefixWarning?: boolean;
|
|
112
|
+
/**
|
|
113
|
+
* How many seconds past `expiresAt` to keep the key alive in Redis, so
|
|
114
|
+
* the store layer can still read it during the clock-skew window and
|
|
115
|
+
* return `IDEMPOTENCY_EXPIRED` (rather than treating it as a fresh
|
|
116
|
+
* miss). Defaults to 120s — covers the store's default 60s skew with
|
|
117
|
+
* margin. Set to 0 to collapse `expired` into `miss` (not recommended
|
|
118
|
+
* — buyers lose the explicit expired signal).
|
|
119
|
+
*/
|
|
120
|
+
expiredGraceSeconds?: number;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Test-only escape hatch to reset the once-warn flag between test runs.
|
|
124
|
+
* Not exported through any index — adopters can't reach it from outside
|
|
125
|
+
* this file.
|
|
126
|
+
*/
|
|
127
|
+
export declare function __resetDefaultPrefixWarningForTests(): void;
|
|
128
|
+
/**
|
|
129
|
+
* Create a Redis-backed idempotency cache.
|
|
130
|
+
*
|
|
131
|
+
* **Startup probe.** Call `store.probe()` (or `probeIdempotencyStore(store)`)
|
|
132
|
+
* before serving traffic to catch a bad `REDIS_URL` or unreachable
|
|
133
|
+
* instance at boot rather than on the first mutating request. Wire it via:
|
|
134
|
+
*
|
|
135
|
+
* ```ts
|
|
136
|
+
* serve(createAgent, { readinessCheck: () => store.probe() });
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
139
|
+
* **Client error handling.** node-redis emits errors on the client itself
|
|
140
|
+
* for transient connection drops. Without a listener, Node's
|
|
141
|
+
* `EventEmitter` default-throws and crashes the process. Add one in your
|
|
142
|
+
* bootstrap:
|
|
143
|
+
*
|
|
144
|
+
* ```ts
|
|
145
|
+
* client.on('error', (err) => console.error('redis error', err));
|
|
146
|
+
* ```
|
|
147
|
+
*
|
|
148
|
+
* **Redis memory policy — set this on the deployment.** A buyer with a
|
|
149
|
+
* valid principal can mint unbounded distinct `idempotency_key` values
|
|
150
|
+
* and hit any mutating tool; each write adds a key to Redis with the
|
|
151
|
+
* configured `ttlSeconds` (default 24h). A sufficient rate can pressure
|
|
152
|
+
* Redis memory before TTLs evict naturally. Configure your Redis with:
|
|
153
|
+
*
|
|
154
|
+
* - **`maxmemory-policy volatile-lru`** (recommended) — evicts only
|
|
155
|
+
* TTL'd keys, containing blast radius to AdCP's keyspace if the
|
|
156
|
+
* instance is shared with other apps. All keys this backend writes
|
|
157
|
+
* carry TTL, so this is safe.
|
|
158
|
+
* - **`maxmemory-policy allkeys-lru`** — only on a Redis db dedicated
|
|
159
|
+
* to AdCP. Will evict your other keys if shared.
|
|
160
|
+
* - **`maxmemory-policy noeviction`** (Redis default) — fail-closed:
|
|
161
|
+
* the backend's writes will start erroring once memory fills, and
|
|
162
|
+
* mutating requests will fail. Operationally noisy but never serves
|
|
163
|
+
* stale data; choose this only if you'd rather page than evict.
|
|
164
|
+
*
|
|
165
|
+
* Pair with alerting on a per-principal `VALIDATION_ERROR` rate — a
|
|
166
|
+
* drifted handler hit by a retrying buyer writes 10s-TTL entries on
|
|
167
|
+
* every fresh key, amplifying the rate of cache fill. Steady-state
|
|
168
|
+
* `VALIDATION_ERROR` should be zero.
|
|
169
|
+
*/
|
|
170
|
+
export declare function redisBackend(client: RedisBackendClient, options?: RedisBackendOptions): IdempotencyBackend;
|
|
171
|
+
//# sourceMappingURL=redis.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../../../src/lib/server/idempotency/backends/redis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAyB,MAAM,UAAU,CAAC;AAK1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/F,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,kBAAkB,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,eAAe,CAAC;AAElF,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAkDD;;;;GAIG;AACH,wBAAgB,mCAAmC,IAAI,IAAI,CAE1D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,EAAE,OAAO,GAAE,mBAAwB,GAAG,kBAAkB,CA+H9G"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Redis backend for the idempotency store.
|
|
4
|
+
*
|
|
5
|
+
* Stores one key per `(principal, key, [extraScope])` carrying the JSON
|
|
6
|
+
* payload `{ payloadHash, response, expiresAt }`. Expiry is enforced by
|
|
7
|
+
* Redis itself via the key TTL — no sweeper job required.
|
|
8
|
+
*
|
|
9
|
+
* **Reclaim semantics.** The `putIfAbsent` claim maps to `SET … NX EX`:
|
|
10
|
+
* because Redis auto-deletes expired keys, a crashed in-flight claim is
|
|
11
|
+
* naturally reclaimable on retry without the explicit `WHERE expires_at <
|
|
12
|
+
* NOW()` dance the Postgres backend needs.
|
|
13
|
+
*
|
|
14
|
+
* **`expired` vs `miss` parity.** The store layer distinguishes `expired`
|
|
15
|
+
* (cached key past TTL within clock-skew window) from `miss` (no cached
|
|
16
|
+
* key) — that affects whether the buyer sees `IDEMPOTENCY_EXPIRED` or a
|
|
17
|
+
* fresh execution. Postgres rows linger past `expires_at` until cleanup;
|
|
18
|
+
* Redis would evict them at the second they expire, collapsing `expired`
|
|
19
|
+
* into `miss`. We hold the key alive for an extra `expiredGraceSeconds`
|
|
20
|
+
* (defaults to 120s — covers the store's default 60s clock skew plus a
|
|
21
|
+
* margin) so the store layer can read `expiresAt` from the value and
|
|
22
|
+
* return `expired` correctly within the skew window.
|
|
23
|
+
*
|
|
24
|
+
* **`clearAll` intentionally omitted.** A shared Redis instance is a
|
|
25
|
+
* production resource — accidentally calling `FLUSHDB` from a compliance
|
|
26
|
+
* reset hook would nuke unrelated keys. Test setups that want a clean
|
|
27
|
+
* slate should run against a dedicated Redis db (`REDIS_URL=…/15`) and
|
|
28
|
+
* call `FLUSHDB` themselves.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* import { createClient } from 'redis';
|
|
33
|
+
* import { createIdempotencyStore, redisBackend } 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 store = createIdempotencyStore({
|
|
40
|
+
* backend: redisBackend(client),
|
|
41
|
+
* ttlSeconds: 86400,
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.__resetDefaultPrefixWarningForTests = __resetDefaultPrefixWarningForTests;
|
|
47
|
+
exports.redisBackend = redisBackend;
|
|
48
|
+
const DEFAULT_KEY_PREFIX = 'adcp:idem:';
|
|
49
|
+
const DEFAULT_EXPIRED_GRACE_SECONDS = 120;
|
|
50
|
+
/**
|
|
51
|
+
* Module-level once-flag: the default-prefix-on-db-0 warning fires at
|
|
52
|
+
* most once per process across all redisBackend instances. Operators
|
|
53
|
+
* standing up multiple backends (sharded, multi-region) shouldn't see
|
|
54
|
+
* N identical warnings.
|
|
55
|
+
*/
|
|
56
|
+
let hasWarnedAboutDefaultPrefix = false;
|
|
57
|
+
/**
|
|
58
|
+
* Best-effort introspection: detect the Redis db index when the client
|
|
59
|
+
* is a node-redis v4/v5 `RedisClientType`. Returns `null` for escape-
|
|
60
|
+
* hatch clients (ioredis, Upstash, test doubles, mocks) where we can't
|
|
61
|
+
* tell — prefer false-negative over a noisy false-positive warning.
|
|
62
|
+
*
|
|
63
|
+
* The default-prefix warning uses this to decide whether to fire: db 0
|
|
64
|
+
* is the strong signal of a shared/non-dedicated Redis (the typical
|
|
65
|
+
* "I just spun up Redis" path); db > 0 is the signal of an operator
|
|
66
|
+
* who already partitioned, who doesn't need the nag.
|
|
67
|
+
*/
|
|
68
|
+
function detectNodeRedisDbIndex(client) {
|
|
69
|
+
if (!client || typeof client !== 'object')
|
|
70
|
+
return null;
|
|
71
|
+
const opts = client.options;
|
|
72
|
+
if (!opts || typeof opts !== 'object')
|
|
73
|
+
return null;
|
|
74
|
+
if (typeof opts.database === 'number')
|
|
75
|
+
return opts.database;
|
|
76
|
+
if (typeof opts.url === 'string') {
|
|
77
|
+
try {
|
|
78
|
+
const u = new URL(opts.url);
|
|
79
|
+
if (u.protocol !== 'redis:' && u.protocol !== 'rediss:')
|
|
80
|
+
return null;
|
|
81
|
+
const path = u.pathname.replace(/^\//, '');
|
|
82
|
+
if (path === '')
|
|
83
|
+
return 0;
|
|
84
|
+
const n = Number(path);
|
|
85
|
+
return Number.isInteger(n) && n >= 0 ? n : null;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Test-only escape hatch to reset the once-warn flag between test runs.
|
|
95
|
+
* Not exported through any index — adopters can't reach it from outside
|
|
96
|
+
* this file.
|
|
97
|
+
*/
|
|
98
|
+
function __resetDefaultPrefixWarningForTests() {
|
|
99
|
+
hasWarnedAboutDefaultPrefix = false;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Create a Redis-backed idempotency cache.
|
|
103
|
+
*
|
|
104
|
+
* **Startup probe.** Call `store.probe()` (or `probeIdempotencyStore(store)`)
|
|
105
|
+
* before serving traffic to catch a bad `REDIS_URL` or unreachable
|
|
106
|
+
* instance at boot rather than on the first mutating request. Wire it via:
|
|
107
|
+
*
|
|
108
|
+
* ```ts
|
|
109
|
+
* serve(createAgent, { readinessCheck: () => store.probe() });
|
|
110
|
+
* ```
|
|
111
|
+
*
|
|
112
|
+
* **Client error handling.** node-redis emits errors on the client itself
|
|
113
|
+
* for transient connection drops. Without a listener, Node's
|
|
114
|
+
* `EventEmitter` default-throws and crashes the process. Add one in your
|
|
115
|
+
* bootstrap:
|
|
116
|
+
*
|
|
117
|
+
* ```ts
|
|
118
|
+
* client.on('error', (err) => console.error('redis error', err));
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* **Redis memory policy — set this on the deployment.** A buyer with a
|
|
122
|
+
* valid principal can mint unbounded distinct `idempotency_key` values
|
|
123
|
+
* and hit any mutating tool; each write adds a key to Redis with the
|
|
124
|
+
* configured `ttlSeconds` (default 24h). A sufficient rate can pressure
|
|
125
|
+
* Redis memory before TTLs evict naturally. Configure your Redis with:
|
|
126
|
+
*
|
|
127
|
+
* - **`maxmemory-policy volatile-lru`** (recommended) — evicts only
|
|
128
|
+
* TTL'd keys, containing blast radius to AdCP's keyspace if the
|
|
129
|
+
* instance is shared with other apps. All keys this backend writes
|
|
130
|
+
* carry TTL, so this is safe.
|
|
131
|
+
* - **`maxmemory-policy allkeys-lru`** — only on a Redis db dedicated
|
|
132
|
+
* to AdCP. Will evict your other keys if shared.
|
|
133
|
+
* - **`maxmemory-policy noeviction`** (Redis default) — fail-closed:
|
|
134
|
+
* the backend's writes will start erroring once memory fills, and
|
|
135
|
+
* mutating requests will fail. Operationally noisy but never serves
|
|
136
|
+
* stale data; choose this only if you'd rather page than evict.
|
|
137
|
+
*
|
|
138
|
+
* Pair with alerting on a per-principal `VALIDATION_ERROR` rate — a
|
|
139
|
+
* drifted handler hit by a retrying buyer writes 10s-TTL entries on
|
|
140
|
+
* every fresh key, amplifying the rate of cache fill. Steady-state
|
|
141
|
+
* `VALIDATION_ERROR` should be zero.
|
|
142
|
+
*/
|
|
143
|
+
function redisBackend(client, options = {}) {
|
|
144
|
+
// The function calls only the four methods on RedisLikeClient. The
|
|
145
|
+
// wider RedisClientType union covers the node-redis happy path without
|
|
146
|
+
// forcing a cast at the call site; internally we narrow.
|
|
147
|
+
const c = client;
|
|
148
|
+
const keyPrefix = options.keyPrefix ?? DEFAULT_KEY_PREFIX;
|
|
149
|
+
const expiredGraceSeconds = options.expiredGraceSeconds ?? DEFAULT_EXPIRED_GRACE_SECONDS;
|
|
150
|
+
if (!Number.isFinite(expiredGraceSeconds) || expiredGraceSeconds < 0) {
|
|
151
|
+
throw new Error(`redisBackend: expiredGraceSeconds must be a non-negative finite number. Got ${expiredGraceSeconds}.`);
|
|
152
|
+
}
|
|
153
|
+
// One-time warning when the default keyPrefix is paired with a
|
|
154
|
+
// node-redis client we can confidently identify as being on db 0 —
|
|
155
|
+
// the strong signal of a shared/non-dedicated Redis where the
|
|
156
|
+
// default prefix is most likely to collide with another deployment.
|
|
157
|
+
// Stays silent for escape-hatch clients (ioredis, test doubles)
|
|
158
|
+
// because we can't introspect their db index.
|
|
159
|
+
if (options.keyPrefix === undefined &&
|
|
160
|
+
!options.suppressDefaultPrefixWarning &&
|
|
161
|
+
!hasWarnedAboutDefaultPrefix &&
|
|
162
|
+
detectNodeRedisDbIndex(client) === 0) {
|
|
163
|
+
hasWarnedAboutDefaultPrefix = true;
|
|
164
|
+
console.warn(`redisBackend: using the default keyPrefix "${DEFAULT_KEY_PREFIX}" against Redis db 0. ` +
|
|
165
|
+
`If this Redis db is shared with another AdCP deployment (or other apps), the principal ` +
|
|
166
|
+
`segment alone is not enough to prevent cross-deployment collision. Set a deployment-unique ` +
|
|
167
|
+
`keyPrefix (e.g., "adcp:idem:prod-eu:") or use a dedicated Redis db. ` +
|
|
168
|
+
`Pass { suppressDefaultPrefixWarning: true } to silence this once you've confirmed isolation.`);
|
|
169
|
+
}
|
|
170
|
+
function prefixed(scopedKey) {
|
|
171
|
+
return `${keyPrefix}${scopedKey}`;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Compute the Redis TTL for an entry. The store records absolute
|
|
175
|
+
* `expiresAt`; Redis wants relative seconds. Add `expiredGraceSeconds`
|
|
176
|
+
* so the value lingers through the store's clock-skew window.
|
|
177
|
+
*
|
|
178
|
+
* Throws if the resulting TTL is non-positive — that would mean a
|
|
179
|
+
* caller is writing an entry whose `expiresAt` is already past, which
|
|
180
|
+
* is a logic bug, not a substrate-papering case. A silent `EX 1`
|
|
181
|
+
* clamp would let the entry vanish in 1s and the next caller would
|
|
182
|
+
* see `miss` and re-execute the side effect.
|
|
183
|
+
*/
|
|
184
|
+
function ttlFor(expiresAt) {
|
|
185
|
+
const nowSeconds = Math.floor(Date.now() / 1000);
|
|
186
|
+
const ttl = Math.floor(expiresAt - nowSeconds + expiredGraceSeconds);
|
|
187
|
+
if (ttl <= 0) {
|
|
188
|
+
throw new Error(`redisBackend: refusing to write an entry whose expiresAt (${expiresAt}) is already past — ` +
|
|
189
|
+
`the substrate-level TTL would be ${ttl}s. Caller logic error.`);
|
|
190
|
+
}
|
|
191
|
+
return ttl;
|
|
192
|
+
}
|
|
193
|
+
return {
|
|
194
|
+
async probe() {
|
|
195
|
+
try {
|
|
196
|
+
await c.ping();
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
// Generic user-facing message; the underlying error rides on
|
|
200
|
+
// `Error.cause` for operators who log it. Avoids leaking infra
|
|
201
|
+
// shape (`ECONNREFUSED 10.0.x.x`, `WRONGPASS …`) into any
|
|
202
|
+
// adopter that wires probe failures into an external-facing
|
|
203
|
+
// `/healthz` body.
|
|
204
|
+
throw new Error(`idempotency backend probe failed: Redis is unreachable or misconfigured. ` +
|
|
205
|
+
`The server would advertise IdempotencySupported but every mutating call would fail. ` +
|
|
206
|
+
`Check REDIS_URL and that the instance is up. See server logs for the underlying cause.`, { cause: err });
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
async get(scopedKey) {
|
|
210
|
+
const raw = await c.get(prefixed(scopedKey));
|
|
211
|
+
if (raw === null)
|
|
212
|
+
return null;
|
|
213
|
+
let parsed;
|
|
214
|
+
try {
|
|
215
|
+
parsed = JSON.parse(raw);
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
// A corrupt value at our key is a bigger problem than a single
|
|
219
|
+
// cache miss — surface it loudly so an operator can investigate
|
|
220
|
+
// (key collision with another app, manual tampering, etc.). The
|
|
221
|
+
// scoped key contains the principal — omit it from the public
|
|
222
|
+
// message and attach the parse error as Error.cause so server
|
|
223
|
+
// logs retain the detail without leaking via response bodies.
|
|
224
|
+
throw new Error('redisBackend: corrupt cache entry — not valid JSON. See server logs for key + parse error.', {
|
|
225
|
+
cause: err,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
return {
|
|
229
|
+
payloadHash: parsed.payloadHash,
|
|
230
|
+
response: parsed.response,
|
|
231
|
+
expiresAt: parsed.expiresAt,
|
|
232
|
+
};
|
|
233
|
+
},
|
|
234
|
+
async put(scopedKey, entry) {
|
|
235
|
+
await c.set(prefixed(scopedKey), JSON.stringify(entry), { EX: ttlFor(entry.expiresAt) });
|
|
236
|
+
},
|
|
237
|
+
async putIfAbsent(scopedKey, entry) {
|
|
238
|
+
// SET … NX EX: atomic claim. Redis returns 'OK' on success and
|
|
239
|
+
// null when NX prevented the write. Expired keys are already gone
|
|
240
|
+
// from Redis, so the reclaim-stale-claim case the pg backend
|
|
241
|
+
// handles explicitly is automatic here.
|
|
242
|
+
const result = await c.set(prefixed(scopedKey), JSON.stringify(entry), {
|
|
243
|
+
EX: ttlFor(entry.expiresAt),
|
|
244
|
+
NX: true,
|
|
245
|
+
});
|
|
246
|
+
return result !== null;
|
|
247
|
+
},
|
|
248
|
+
async delete(scopedKey) {
|
|
249
|
+
await c.del(prefixed(scopedKey));
|
|
250
|
+
},
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=redis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../../../src/lib/server/idempotency/backends/redis.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,4 +4,6 @@ export { memoryBackend } from './backends/memory';
|
|
|
4
4
|
export type { MemoryBackendOptions } from './backends/memory';
|
|
5
5
|
export { pgBackend, getIdempotencyMigration, IDEMPOTENCY_MIGRATION, cleanupExpiredIdempotency } from './backends/pg';
|
|
6
6
|
export type { PgBackendOptions } from './backends/pg';
|
|
7
|
+
export { redisBackend } from './backends/redis';
|
|
8
|
+
export type { RedisBackendOptions, RedisBackendClient, RedisLikeClient } from './backends/redis';
|
|
7
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/idempotency/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrF,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACrH,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/idempotency/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACrF,YAAY,EACV,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACrH,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cleanupExpiredIdempotency = exports.IDEMPOTENCY_MIGRATION = exports.getIdempotencyMigration = exports.pgBackend = exports.memoryBackend = exports.probeIdempotencyStore = exports.hashPayload = exports.createIdempotencyStore = void 0;
|
|
3
|
+
exports.redisBackend = exports.cleanupExpiredIdempotency = exports.IDEMPOTENCY_MIGRATION = exports.getIdempotencyMigration = exports.pgBackend = exports.memoryBackend = exports.probeIdempotencyStore = exports.hashPayload = exports.createIdempotencyStore = void 0;
|
|
4
4
|
var store_1 = require("./store");
|
|
5
5
|
Object.defineProperty(exports, "createIdempotencyStore", { enumerable: true, get: function () { return store_1.createIdempotencyStore; } });
|
|
6
6
|
Object.defineProperty(exports, "hashPayload", { enumerable: true, get: function () { return store_1.hashPayload; } });
|
|
@@ -12,4 +12,6 @@ Object.defineProperty(exports, "pgBackend", { enumerable: true, get: function ()
|
|
|
12
12
|
Object.defineProperty(exports, "getIdempotencyMigration", { enumerable: true, get: function () { return pg_1.getIdempotencyMigration; } });
|
|
13
13
|
Object.defineProperty(exports, "IDEMPOTENCY_MIGRATION", { enumerable: true, get: function () { return pg_1.IDEMPOTENCY_MIGRATION; } });
|
|
14
14
|
Object.defineProperty(exports, "cleanupExpiredIdempotency", { enumerable: true, get: function () { return pg_1.cleanupExpiredIdempotency; } });
|
|
15
|
+
var redis_1 = require("./backends/redis");
|
|
16
|
+
Object.defineProperty(exports, "redisBackend", { enumerable: true, get: function () { return redis_1.redisBackend; } });
|
|
15
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/server/idempotency/index.ts"],"names":[],"mappings":";;;AAAA,iCAAqF;AAA5E,+GAAA,sBAAsB,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,8GAAA,qBAAqB,OAAA;AAQnE,4CAAkD;AAAzC,uGAAA,aAAa,OAAA;AAEtB,oCAAqH;AAA5G,+FAAA,SAAS,OAAA;AAAE,6GAAA,uBAAuB,OAAA;AAAE,2GAAA,qBAAqB,OAAA;AAAE,+GAAA,yBAAyB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/server/idempotency/index.ts"],"names":[],"mappings":";;;AAAA,iCAAqF;AAA5E,+GAAA,sBAAsB,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,8GAAA,qBAAqB,OAAA;AAQnE,4CAAkD;AAAzC,uGAAA,aAAa,OAAA;AAEtB,oCAAqH;AAA5G,+FAAA,SAAS,OAAA;AAAE,6GAAA,uBAAuB,OAAA;AAAE,2GAAA,qBAAqB,OAAA;AAAE,+GAAA,yBAAyB,OAAA;AAE7F,0CAAgD;AAAvC,qGAAA,YAAY,OAAA"}
|
|
@@ -146,6 +146,50 @@ export type IdempotencyCheckResult = {
|
|
|
146
146
|
kind: 'miss';
|
|
147
147
|
payloadHash: string;
|
|
148
148
|
};
|
|
149
|
+
/**
|
|
150
|
+
* Configuration for `createIdempotencyStore`.
|
|
151
|
+
*
|
|
152
|
+
* **Cached responses at rest — handler responsibility.** The store
|
|
153
|
+
* caches whatever the handler returned as the response payload, then
|
|
154
|
+
* `JSON.stringify`-s it into the configured backend for the declared
|
|
155
|
+
* `ttlSeconds` (default 24h, max 7d). The hash-exclusion list strips
|
|
156
|
+
* `idempotency_key`, `governance_context`, and
|
|
157
|
+
* `push_notification_config.authentication.credentials` from the
|
|
158
|
+
* **hash** so a rotated credential on retry doesn't false-conflict,
|
|
159
|
+
* but the **stored response** is the handler's verbatim output.
|
|
160
|
+
*
|
|
161
|
+
* If a handler returns a response that includes:
|
|
162
|
+
*
|
|
163
|
+
* - a refreshed bearer / OAuth access token,
|
|
164
|
+
* - a signed governance / auth payload,
|
|
165
|
+
* - `push_notification_config.authentication.credentials` (a buyer-
|
|
166
|
+
* supplied write-only secret — the contract is that sellers MUST
|
|
167
|
+
* NOT echo it back; receipt correlation uses
|
|
168
|
+
* `push_notification_config.token` instead),
|
|
169
|
+
* - any other secret material,
|
|
170
|
+
*
|
|
171
|
+
* those secrets sit at rest in the backend for `ttlSeconds`. On Redis
|
|
172
|
+
* without TLS, they're also plaintext over the wire. The framework
|
|
173
|
+
* does not scrub responses before caching — the AdCP spec doesn't
|
|
174
|
+
* require it of either party, and a built-in scrubber would change
|
|
175
|
+
* the wire shape of legitimate adopter responses without warning.
|
|
176
|
+
*
|
|
177
|
+
* Practical guidance:
|
|
178
|
+
*
|
|
179
|
+
* - **Don't return credentials in handler responses.** No AdCP tool's
|
|
180
|
+
* response schema asks for them; if your adapter is echoing them
|
|
181
|
+
* back, refactor. `push_notification_config.credentials` in
|
|
182
|
+
* particular is write-only — `token` is the field a seller uses to
|
|
183
|
+
* confirm receipt.
|
|
184
|
+
* - If a handler nonetheless must produce a secret-bearing response
|
|
185
|
+
* (e.g., an internal-only echo for adapter debugging), wrap your
|
|
186
|
+
* handler to scrub before returning, OR use a custom
|
|
187
|
+
* `IdempotencyBackend` that transforms entries on the write path.
|
|
188
|
+
*
|
|
189
|
+
* See also `docs/guides/CTX-METADATA-SAFETY.md` for related guidance
|
|
190
|
+
* on what NOT to put in `ctx_metadata` (which has its own caching
|
|
191
|
+
* surface with the same at-rest concern).
|
|
192
|
+
*/
|
|
149
193
|
export interface IdempotencyStoreConfig {
|
|
150
194
|
/** Storage backend. Use `memoryBackend()` for tests, `pgBackend(pool)` for production. */
|
|
151
195
|
backend: IdempotencyBackend;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/idempotency/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/idempotency/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/lib/server/idempotency/store.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../src/lib/server/idempotency/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,8 +54,8 @@ export type { AdcpServerConfig, WebhooksConfig, AdcpToolMap, AdcpServerToolName,
|
|
|
54
54
|
export { DEFAULT_REPORTING_CAPABILITIES } from './product-defaults';
|
|
55
55
|
export { isSandboxRequest, mergeSeededProductsIntoResponse, filterValidSeededProducts, filterValidSeededCreatives, filterValidSeededMediaBuys, filterValidSeededAccounts, filterValidSeededAccountFinancials, filterValidSeededCreativeFormats, mergeSeededCreativesIntoResponse, mergeSeededMediaBuysIntoResponse, mergeSeededAccountsIntoResponse, mergeSeededCreativeFormatsIntoResponse, pickSeededAccountFinancialsForRequest, replaceAccountFinancialsIfSeeded, bridgeFromTestControllerStore, bridgeFromSessionStore, } from './test-controller-bridge';
|
|
56
56
|
export type { TestControllerBridge, TestControllerBridgeContext, BridgeFromSessionStoreOptions, SeededCreative, SeededMediaBuy, SeededAccountFinancials, } from './test-controller-bridge';
|
|
57
|
-
export { createIdempotencyStore, probeIdempotencyStore, memoryBackend, pgBackend, getIdempotencyMigration, IDEMPOTENCY_MIGRATION, cleanupExpiredIdempotency, hashPayload, } from './idempotency';
|
|
58
|
-
export type { IdempotencyStore, IdempotencyStoreConfig, IdempotencyBackend, IdempotencyCacheEntry, IdempotencyCheckResult, MemoryBackendOptions, PgBackendOptions, } from './idempotency';
|
|
57
|
+
export { createIdempotencyStore, probeIdempotencyStore, memoryBackend, pgBackend, getIdempotencyMigration, IDEMPOTENCY_MIGRATION, cleanupExpiredIdempotency, redisBackend, hashPayload, } from './idempotency';
|
|
58
|
+
export type { IdempotencyStore, IdempotencyStoreConfig, IdempotencyBackend, IdempotencyCacheEntry, IdempotencyCheckResult, MemoryBackendOptions, PgBackendOptions, RedisBackendOptions, RedisBackendClient, RedisLikeClient, } from './idempotency';
|
|
59
59
|
export { createA2AAdapter, A2AInvocationError } from './a2a-adapter';
|
|
60
60
|
export type { A2AAdapter, A2AAdapterOptions, A2AAgentCardOverrides, A2AMountOptions, ExpressAppLike, } from './a2a-adapter';
|
|
61
61
|
export { createWebhookEmitter, memoryWebhookKeyStore } from './webhook-emitter';
|
|
@@ -68,8 +68,8 @@ export type { CheckGovernanceOptions, GovernanceCallResult, GovernanceApproved,
|
|
|
68
68
|
export { resolvePropertyList, resolveCollectionList, matchesPropertyList, matchesCollectionList, } from './targeting-helpers';
|
|
69
69
|
export type { ResolvedPropertyList, ResolvedCollectionList, ResolvedCollection, ResolveListOptions, } from './targeting-helpers';
|
|
70
70
|
export * from './decisioning';
|
|
71
|
-
export { createCtxMetadataStore, memoryCtxMetadataStore, pgCtxMetadataStore, getCtxMetadataMigration, cleanupExpiredCtxMetadata, CTX_METADATA_MIGRATION, CtxMetadataValidationError, ADCP_INTERNAL_TAG, DEFAULT_MAX_VALUE_BYTES, MAX_TTL_SECONDS, stripCtxMetadata, hasCtxMetadata, stripImplementationConfig, hasImplementationConfig, ctxMetadataResultKey, scopeCtxMetadataKey, } from './ctx-metadata';
|
|
72
|
-
export type { CtxMetadataStore, CtxMetadataStoreConfig, CtxMetadataBackend, CtxMetadataEntry, CtxMetadataRef, ResourceKind as CtxMetadataResourceKind, MemoryCtxMetadataStoreOptions, PgCtxMetadataBackendOptions, WireShape, } from './ctx-metadata';
|
|
71
|
+
export { createCtxMetadataStore, memoryCtxMetadataStore, pgCtxMetadataStore, redisCtxMetadataStore, getCtxMetadataMigration, cleanupExpiredCtxMetadata, CTX_METADATA_MIGRATION, CtxMetadataValidationError, ADCP_INTERNAL_TAG, DEFAULT_MAX_VALUE_BYTES, MAX_TTL_SECONDS, stripCtxMetadata, hasCtxMetadata, stripImplementationConfig, hasImplementationConfig, ctxMetadataResultKey, scopeCtxMetadataKey, } from './ctx-metadata';
|
|
72
|
+
export type { CtxMetadataStore, CtxMetadataStoreConfig, CtxMetadataBackend, CtxMetadataEntry, CtxMetadataRef, ResourceKind as CtxMetadataResourceKind, MemoryCtxMetadataStoreOptions, PgCtxMetadataBackendOptions, RedisCtxMetadataBackendOptions, CtxMetadataRedisBackendClient, CtxMetadataRedisLikeClient, WireShape, } from './ctx-metadata';
|
|
73
73
|
export { createTranslationMap, createUpstreamHttpClient } from './upstream-helpers';
|
|
74
74
|
export type { TranslationMap, UpstreamAuth, AuthContext, UpstreamCallOptions, UpstreamHttpClientOptions, UpstreamHttpClient, UpstreamHttpResult, } from './upstream-helpers';
|
|
75
75
|
export { InMemoryImplicitAccountStore, defaultImplicitKeyFn, type ImplicitAccountStoreOptions, } from '../adapters/implicit-account-store';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/server/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/server/index.ts"],"names":[],"mappings":"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"}
|