@rudra-js/core 0.5.0 → 0.7.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 (67) hide show
  1. package/README.md +64 -16
  2. package/dist/claim-screening.d.ts +10 -0
  3. package/dist/claim-screening.d.ts.map +1 -0
  4. package/dist/claim-screening.js +157 -0
  5. package/dist/claim-screening.js.map +1 -0
  6. package/dist/component-generator.d.ts +0 -70
  7. package/dist/component-generator.d.ts.map +1 -1
  8. package/dist/component-generator.js +27 -135
  9. package/dist/component-generator.js.map +1 -1
  10. package/dist/component-spec.d.ts +4 -159
  11. package/dist/component-spec.d.ts.map +1 -1
  12. package/dist/component-spec.js +0 -92
  13. package/dist/component-spec.js.map +1 -1
  14. package/dist/fallback-component.d.ts +0 -6
  15. package/dist/fallback-component.d.ts.map +1 -1
  16. package/dist/fallback-component.js +0 -21
  17. package/dist/fallback-component.js.map +1 -1
  18. package/dist/fit-to-shopper.d.ts +5 -1
  19. package/dist/fit-to-shopper.d.ts.map +1 -1
  20. package/dist/fit-to-shopper.js +5 -14
  21. package/dist/fit-to-shopper.js.map +1 -1
  22. package/dist/index.d.ts +1 -8
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +0 -7
  25. package/dist/index.js.map +1 -1
  26. package/dist/model-prompt.d.ts +1 -30
  27. package/dist/model-prompt.d.ts.map +1 -1
  28. package/dist/model-prompt.js +19 -78
  29. package/dist/model-prompt.js.map +1 -1
  30. package/dist/product-selection.d.ts +0 -29
  31. package/dist/product-selection.d.ts.map +1 -1
  32. package/dist/product-selection.js +1 -22
  33. package/dist/product-selection.js.map +1 -1
  34. package/dist/provider.d.ts +0 -55
  35. package/dist/provider.d.ts.map +1 -1
  36. package/dist/provider.js +0 -12
  37. package/dist/provider.js.map +1 -1
  38. package/dist/reconciliation.d.ts +6 -61
  39. package/dist/reconciliation.d.ts.map +1 -1
  40. package/dist/reconciliation.js +76 -466
  41. package/dist/reconciliation.js.map +1 -1
  42. package/dist/signal-digest.d.ts +1 -18
  43. package/dist/signal-digest.d.ts.map +1 -1
  44. package/dist/signal-digest.js +27 -66
  45. package/dist/signal-digest.js.map +1 -1
  46. package/dist/spec-cache.d.ts +8 -70
  47. package/dist/spec-cache.d.ts.map +1 -1
  48. package/dist/spec-cache.js +5 -68
  49. package/dist/spec-cache.js.map +1 -1
  50. package/dist/tracking-input.d.ts +0 -49
  51. package/dist/tracking-input.d.ts.map +1 -1
  52. package/dist/tracking-input.js +5 -105
  53. package/dist/tracking-input.js.map +1 -1
  54. package/package.json +7 -6
  55. package/src/claim-screening.ts +190 -0
  56. package/src/component-generator.ts +45 -240
  57. package/src/component-spec.ts +17 -118
  58. package/src/fallback-component.ts +0 -22
  59. package/src/fit-to-shopper.ts +12 -16
  60. package/src/index.ts +1 -8
  61. package/src/model-prompt.ts +25 -84
  62. package/src/product-selection.ts +6 -52
  63. package/src/provider.ts +4 -60
  64. package/src/reconciliation.ts +104 -499
  65. package/src/signal-digest.ts +34 -83
  66. package/src/spec-cache.ts +10 -97
  67. package/src/tracking-input.ts +17 -111
@@ -1 +1 @@
1
- {"version":3,"file":"reconciliation.js","sourceRoot":"","sources":["../src/reconciliation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconciliation.js","sourceRoot":"","sources":["../src/reconciliation.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,6 @@
1
1
  import type { TrackingInput } from './tracking-input.js';
2
- /**
3
- * Reduces a validated tracking payload to the compact, ordered, bounded view
4
- * that everything downstream reads.
5
- *
6
- * Two jobs:
7
- * 1. Keep the volatile part of a prompt small and stable. The contract lets a
8
- * host send 500 signals per category; a prompt cannot afford them, and the
9
- * long tail is noise anyway.
10
- * 2. Give the deterministic path the same evidence the model gets, so a
11
- * degraded render is a weaker version of the same decision rather than an
12
- * unrelated one.
13
- */
14
2
  export interface CategoryAffinity {
15
3
  category: string;
16
- /** Unnormalised. Only the ordering is meaningful — do not show this to anyone. */
17
4
  score: number;
18
5
  }
19
6
  export interface ViewedProduct {
@@ -44,13 +31,8 @@ export interface SignalDigest {
44
31
  recentSearches: string[];
45
32
  categoryAffinity: CategoryAffinity[];
46
33
  interactionCounts: InteractionCount[];
47
- /** True when there is no behavioural evidence to personalise on. */
48
34
  isColdStart: boolean;
49
35
  }
50
- /**
51
- * How much of each signal category survives into the digest. Chosen to keep the
52
- * per-shopper part of a prompt in the low hundreds of tokens.
53
- */
54
36
  export declare const DIGEST_LIMITS: {
55
37
  readonly liked: 12;
56
38
  readonly disliked: 12;
@@ -61,6 +43,7 @@ export declare const DIGEST_LIMITS: {
61
43
  readonly affinity: 6;
62
44
  readonly interactionTypes: 8;
63
45
  };
46
+ export declare function engagedCategories(input: TrackingInput): Set<string>;
64
47
  export declare function buildDigest(input: TrackingInput): SignalDigest;
65
48
  export declare function toCohortDigest(digest: SignalDigest): SignalDigest;
66
49
  //# sourceMappingURL=signal-digest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal-digest.d.ts","sourceRoot":"","sources":["../src/signal-digest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IAErB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAEtC,oEAAoE;IACpE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa;aACxB,KAAK,EAAE,EAAE;aACT,QAAQ,EAAE,EAAE;aACZ,SAAS,EAAE,CAAC;aACZ,IAAI,EAAE,CAAC;aACP,MAAM,EAAE,EAAE;aACV,QAAQ,EAAE,CAAC;aACX,QAAQ,EAAE,CAAC;aACX,gBAAgB,EAAE,CAAC;CACX,CAAC;AAyLX,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CA2C9D;AAKD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CA0BjE"}
1
+ {"version":3,"file":"signal-digest.d.ts","sourceRoot":"","sources":["../src/signal-digest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAIV,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IAEjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IAErB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;IACrC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IAEtC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,aAAa;aACxB,KAAK,EAAE,EAAE;aACT,QAAQ,EAAE,EAAE;aACZ,SAAS,EAAE,CAAC;aACZ,IAAI,EAAE,CAAC;aACP,MAAM,EAAE,EAAE;aACV,QAAQ,EAAE,CAAC;aACX,QAAQ,EAAE,CAAC;aACX,gBAAgB,EAAE,CAAC;CACX,CAAC;AA0FX,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAgBnE;AAuDD,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,CAyC9D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAyBjE"}
@@ -1,7 +1,3 @@
1
- /**
2
- * How much of each signal category survives into the digest. Chosen to keep the
3
- * per-shopper part of a prompt in the low hundreds of tokens.
4
- */
5
1
  export const DIGEST_LIMITS = {
6
2
  liked: 12,
7
3
  disliked: 12,
@@ -12,11 +8,6 @@ export const DIGEST_LIMITS = {
12
8
  affinity: 6,
13
9
  interactionTypes: 8,
14
10
  };
15
- /**
16
- * How much intent each kind of signal implies. A purchase says more about a
17
- * shopper than a view; an explicit dislike says the most, and says it in the
18
- * opposite direction.
19
- */
20
11
  const SIGNAL_WEIGHTS = {
21
12
  purchase: 5,
22
13
  like: 4,
@@ -24,18 +15,10 @@ const SIGNAL_WEIGHTS = {
24
15
  view: 1,
25
16
  dislike: -6,
26
17
  };
27
- /**
28
- * A signal that does not state a weight counts at full strength. This lives in
29
- * one place on purpose: when the default was written out at each call site, the
30
- * merge step defaulted to 0 while scoring defaulted to 1, and an unweighted view
31
- * merged with a `weight: 0.2` view scored as though both were 0.2.
32
- */
33
18
  const effectiveWeight = (signal) => signal.weight ?? 1;
34
- /** Most recent first. A signal with no timestamp sorts last. */
35
19
  function byMostRecent(left, right) {
36
20
  return (right.at ?? 0) - (left.at ?? 0);
37
21
  }
38
- /** The most recent `limit` SKUs, each appearing once. */
39
22
  function recentUniqueSkus(signals, limit) {
40
23
  const skus = [];
41
24
  const alreadySeen = new Set();
@@ -49,11 +32,6 @@ function recentUniqueSkus(signals, limit) {
49
32
  }
50
33
  return skus;
51
34
  }
52
- /**
53
- * A signal may name its own category; otherwise we look the SKU up in the
54
- * candidate set. A signal for a product that is not a candidate today and
55
- * carries no category simply contributes nothing.
56
- */
57
35
  function categoryOf(signal, candidatesBySku) {
58
36
  return signal.category ?? candidatesBySku.get(signal.sku)?.category;
59
37
  }
@@ -74,9 +52,6 @@ function computeCategoryAffinity(input, candidatesBySku) {
74
52
  for (const inCart of signals.cart) {
75
53
  addScore(categoryOf(inCart, candidatesBySku), SIGNAL_WEIGHTS.cart * effectiveWeight(inCart));
76
54
  }
77
- // Merged first, deliberately — see `mergeViewsBySku`. Views are noisy and
78
- // repeat cheaply, so the tenth view counts for far less than the second, and
79
- // log scaling keeps a single obsessive session from drowning out a purchase.
80
55
  for (const view of mergeViewsBySku(signals.mostViewed)) {
81
56
  const scaledViews = Math.log2(1 + view.views);
82
57
  addScore(categoryOf(view, candidatesBySku), SIGNAL_WEIGHTS.view * scaledViews * view.weight);
@@ -84,29 +59,33 @@ function computeCategoryAffinity(input, candidatesBySku) {
84
59
  for (const dislike of signals.dislikes) {
85
60
  addScore(categoryOf(dislike, candidatesBySku), SIGNAL_WEIGHTS.dislike * effectiveWeight(dislike));
86
61
  }
87
- // The category the shopper is standing in right now is itself evidence.
88
62
  addScore(input.context.currentCategory, SIGNAL_WEIGHTS.like);
89
- return [...scoreByCategory.entries()]
90
- .map(([category, score]) => ({
91
- category,
92
- score: Math.round(score * 100) / 100,
93
- }))
94
- .filter((affinity) => affinity.score > 0)
63
+ const affinities = [];
64
+ for (const [category, score] of scoreByCategory) {
65
+ const rounded = Math.round(score * 100) / 100;
66
+ if (rounded > 0)
67
+ affinities.push({ category, score: rounded });
68
+ }
69
+ return affinities
95
70
  .toSorted((left, right) => right.score - left.score)
96
71
  .slice(0, DIGEST_LIMITS.affinity);
97
72
  }
98
- /**
99
- * Collapses every view record for one SKU into a single running total.
100
- *
101
- * This has to happen before any scoring. A host is free to emit one record per
102
- * page view rather than a running count, and scoring each record separately
103
- * would let thirty `views: 1` records outweigh one `views: 30` record six times
104
- * over, defeating the sub-linear scaling in `computeCategoryAffinity` entirely.
105
- * Merging first makes the score depend on how much someone looked, not on how
106
- * their tracking pipeline happens to batch.
107
- *
108
- * Where records disagree on `weight`, the strongest wins.
109
- */
73
+ export function engagedCategories(input) {
74
+ const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
75
+ const { signals } = input;
76
+ const categories = new Set();
77
+ for (const signal of [
78
+ ...signals.lastPurchased,
79
+ ...signals.likes,
80
+ ...signals.cart,
81
+ ...signals.mostViewed,
82
+ ]) {
83
+ const category = categoryOf(signal, candidatesBySku);
84
+ if (category)
85
+ categories.add(category);
86
+ }
87
+ return categories;
88
+ }
110
89
  function mergeViewsBySku(views) {
111
90
  const totalsBySku = new Map();
112
91
  for (const view of views) {
@@ -130,44 +109,30 @@ function mergeViewsBySku(views) {
130
109
  }
131
110
  return [...totalsBySku.values()];
132
111
  }
133
- /** The most-viewed few, as the digest reports them. */
134
112
  function mostViewedProducts(views) {
135
113
  const top = mergeViewsBySku(views)
136
114
  .toSorted((left, right) => right.views - left.views)
137
115
  .slice(0, DIGEST_LIMITS.viewed);
138
- const products = [];
139
- for (const merged of top) {
140
- const product = { sku: merged.sku, views: merged.views };
141
- if (merged.dwellMs !== undefined)
142
- product.dwellMs = merged.dwellMs;
143
- products.push(product);
144
- }
145
- return products;
116
+ return top.map(({ sku, views: count, dwellMs }) => dwellMs === undefined ? { sku, views: count } : { sku, views: count, dwellMs });
146
117
  }
147
- /** The open-vocabulary long tail, reduced to "which kinds, and how often". */
148
118
  function countByInteractionType(interactions) {
149
119
  const countByType = new Map();
150
120
  for (const interaction of interactions) {
151
121
  countByType.set(interaction.type, (countByType.get(interaction.type) ?? 0) + 1);
152
122
  }
153
- return [...countByType.entries()]
154
- .map(([type, count]) => ({ type, count }))
123
+ const counts = [...countByType.entries()].map(([type, count]) => ({ type, count }));
124
+ return counts
155
125
  .toSorted((left, right) => right.count - left.count)
156
126
  .slice(0, DIGEST_LIMITS.interactionTypes);
157
127
  }
158
- function recentPurchasedSkus(purchases) {
159
- return recentUniqueSkus(purchases, DIGEST_LIMITS.purchased);
160
- }
161
128
  export function buildDigest(input) {
162
129
  const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
163
130
  const { signals, context, user } = input;
164
131
  const likedSkus = recentUniqueSkus(signals.likes, DIGEST_LIMITS.liked);
165
132
  const dislikedSkus = recentUniqueSkus(signals.dislikes, DIGEST_LIMITS.disliked);
166
- const purchasedSkus = recentPurchasedSkus(signals.lastPurchased);
133
+ const purchasedSkus = recentUniqueSkus(signals.lastPurchased, DIGEST_LIMITS.purchased);
167
134
  const cartSkus = recentUniqueSkus(signals.cart, DIGEST_LIMITS.cart);
168
135
  const topViewed = mostViewedProducts(signals.mostViewed);
169
- // Searches say what a shopper wants; they do not say they engaged with any
170
- // product, so they do not lift a shopper out of cold start on their own.
171
136
  const evidenceCount = likedSkus.length +
172
137
  dislikedSkus.length +
173
138
  purchasedSkus.length +
@@ -195,12 +160,8 @@ export function buildDigest(input) {
195
160
  isColdStart: evidenceCount === 0,
196
161
  };
197
162
  }
198
- // Everything the cohort key leaves out has to leave the prompt too, or the
199
- // first shopper's searches and history end up shaping copy that is cached and
200
- // served to everyone else in their cohort.
201
163
  export function toCohortDigest(digest) {
202
164
  const top = digest.categoryAffinity[0];
203
- // Listed rather than spread, so what survives is the thing you read.
204
165
  const cohort = {
205
166
  userId: 'cohort',
206
167
  isReturning: false,
@@ -1 +1 @@
1
- {"version":3,"file":"signal-digest.js","sourceRoot":"","sources":["../src/signal-digest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal-digest.js","sourceRoot":"","sources":["../src/signal-digest.ts"],"names":[],"mappings":"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"}
@@ -1,89 +1,27 @@
1
1
  import { type GeneratedSpec } from './component-spec.js';
2
2
  import type { SignalDigest } from './signal-digest.js';
3
- /**
4
- * Where a generated component is kept between requests.
5
- *
6
- * A generation is stable for as long as the shopper's signals are, so asking a
7
- * model again on the next page view buys nothing and costs a round trip on the
8
- * render path — which is the latency this whole design exists to avoid.
9
- *
10
- * The store is a port rather than an implementation. A single process can use
11
- * the in-memory one; anything running more than one instance needs a shared
12
- * store, or each instance keeps its own copy and the hit rate divides by the
13
- * instance count.
14
- */
15
- /**
16
- * A stored generation, with the moment it was produced.
17
- *
18
- * The timestamp travels with the spec because it cannot be recovered later: a
19
- * component served from cache is not newly generated, and `generatedAt` is the
20
- * only way anything downstream can tell how stale what it is showing has become.
21
- */
22
3
  export interface CachedSpec {
23
4
  spec: GeneratedSpec;
24
- /** Epoch milliseconds at which the model produced this. */
25
5
  generatedAt: number;
26
6
  }
27
- /**
28
- * Asynchronous on purpose. A synchronous `get` would look simpler and would
29
- * make the shared store the docs recommend impossible to write, since no Redis
30
- * or Memcached client can return a value without awaiting.
31
- */
32
7
  export interface SpecCache {
33
8
  get(key: string): Promise<CachedSpec | undefined>;
34
9
  set(key: string, cached: CachedSpec): Promise<void>;
35
10
  delete?(key: string): Promise<void>;
36
11
  }
37
12
  export interface MemorySpecCacheOptions {
38
- /** How long an entry stays valid. Defaults to 60 seconds. */
39
13
  ttlMs?: number;
40
- /** Hard ceiling on entries. Least recently read is evicted first. */
41
14
  maxEntries?: number;
42
- /** Injectable clock, so tests do not have to wait. */
43
15
  now?: () => number;
44
16
  }
45
- /**
46
- * A bounded in-process cache.
47
- *
48
- * `maxEntries` is generous relative to the default TTL for a reason: a ceiling
49
- * low enough to evict entries before they expire silently turns a longer TTL
50
- * into a setting that does nothing, and the person who raised it has no way to
51
- * tell.
52
- */
53
17
  export declare function createMemorySpecCache(options?: MemorySpecCacheOptions): SpecCache;
54
- /**
55
- * A cache that stores nothing, so every request generates.
56
- *
57
- * This is not a stub. It is the control for any measurement of generation cost
58
- * or latency: with a cache in front, a benchmark reports how often it hit, not
59
- * what generating costs.
60
- */
61
18
  export declare function createNullSpecCache(): SpecCache;
62
- /**
63
- * Derives the cache key.
64
- *
65
- * The digest goes in **whole**, rather than as a hand-picked list of fields.
66
- * That is the entire point of this function. The previous implementation listed
67
- * the fields it thought mattered, and four of them drifted: they reached the
68
- * model but not the key, so two shoppers with genuinely different histories
69
- * collided and were served each other's component. Hashing the whole digest
70
- * makes that class of bug unreachable — a field cannot be forgotten here,
71
- * because nothing is named here.
72
- *
73
- * The cost is a lower hit rate than a hand-tuned key would give, since every
74
- * signal now moves the key. That is the right way round: a key that is too
75
- * specific wastes money, and a key that is too loose shows one shopper another
76
- * shopper's page. Raising the hit rate means deliberately coarsening the digest
77
- * itself, which is a decision to make against measurements rather than by
78
- * guessing here.
79
- *
80
- * Candidates enter as SKUs only. Their titles, prices and ratings reach the
81
- * model too, but including them would churn the key on every price change for
82
- * copy that would almost always come back the same. The consequence is bounded
83
- * and worth stating: within one TTL, a price change does not refresh the
84
- * generated copy. It cannot show a stale price — prices are read from the live
85
- * catalog at render time, never from the model.
86
- */
87
- export declare function specCacheKey(digest: SignalDigest, candidateSkus: readonly string[], providerId: string): string;
88
- export declare function cohortCacheKey(digest: SignalDigest, candidateSkus: readonly string[], providerId: string): string;
19
+ export declare function specCacheKey(digest: SignalDigest, candidateSkus: readonly string[], provider: {
20
+ name: string;
21
+ model: string;
22
+ }): string;
23
+ export declare function cohortCacheKey(digest: SignalDigest, candidateSkus: readonly string[], provider: {
24
+ name: string;
25
+ model: string;
26
+ }): string;
89
27
  //# sourceMappingURL=spec-cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-cache.d.ts","sourceRoot":"","sources":["../src/spec-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;;GAWG;AAEH;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAClD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAgBD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,SAAS,CAmDrF;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,SAAS,CAS/C;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,UAAU,EAAE,MAAM,GACjB,MAAM,CAYR;AAMD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,UAAU,EAAE,MAAM,GACjB,MAAM,CAuBR"}
1
+ {"version":3,"file":"spec-cache.d.ts","sourceRoot":"","sources":["../src/spec-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IAEpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAClD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAgBD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,sBAA2B,GAAG,SAAS,CA2CrF;AAED,wBAAgB,mBAAmB,IAAI,SAAS,CAO/C;AAeD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC,MAAM,CAUR;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC,MAAM,CAmBR"}
@@ -9,23 +9,9 @@ function assertFiniteAtLeastZero(name, value) {
9
9
  : '';
10
10
  throw new RangeError(`${name} must be a finite number of at least 0, received ${value}${hint}`);
11
11
  }
12
- /**
13
- * A bounded in-process cache.
14
- *
15
- * `maxEntries` is generous relative to the default TTL for a reason: a ceiling
16
- * low enough to evict entries before they expire silently turns a longer TTL
17
- * into a setting that does nothing, and the person who raised it has no way to
18
- * tell.
19
- */
20
12
  export function createMemorySpecCache(options = {}) {
21
13
  const ttlMs = options.ttlMs ?? 60_000;
22
14
  const maxEntries = options.maxEntries ?? 10_000;
23
- // Checked rather than trusted, because the way these are usually supplied is
24
- // `Number(process.env.SOMETHING)`, and an unset or misspelled variable makes
25
- // that NaN. Every comparison against NaN is false, so the cache would then
26
- // never expire an entry and never evict one — it would grow forever while
27
- // serving a shopper the component they were given last week, and nothing
28
- // would report it. Failing at construction is the only loud option.
29
15
  assertFiniteAtLeastZero('ttlMs', ttlMs);
30
16
  assertFiniteAtLeastZero('maxEntries', maxEntries);
31
17
  if (!Number.isSafeInteger(maxEntries)) {
@@ -42,8 +28,6 @@ export function createMemorySpecCache(options = {}) {
42
28
  entries.delete(key);
43
29
  return undefined;
44
30
  }
45
- // Re-insert so insertion order tracks recency of use, which is what makes
46
- // the eviction below least-recently-used rather than oldest-written.
47
31
  entries.delete(key);
48
32
  entries.set(key, entry);
49
33
  return entry.cached;
@@ -63,24 +47,14 @@ export function createMemorySpecCache(options = {}) {
63
47
  },
64
48
  };
65
49
  }
66
- /**
67
- * A cache that stores nothing, so every request generates.
68
- *
69
- * This is not a stub. It is the control for any measurement of generation cost
70
- * or latency: with a cache in front, a benchmark reports how often it hit, not
71
- * what generating costs.
72
- */
73
50
  export function createNullSpecCache() {
74
51
  return {
75
52
  async get() {
76
53
  return undefined;
77
54
  },
78
- async set() {
79
- // Deliberately nothing.
80
- },
55
+ async set() { },
81
56
  };
82
57
  }
83
- /** Stable JSON: object keys sorted, so key order in a digest cannot matter. */
84
58
  function canonicalise(value) {
85
59
  if (value === null || typeof value !== 'object')
86
60
  return JSON.stringify(value) ?? 'null';
@@ -92,66 +66,29 @@ function canonicalise(value) {
92
66
  return `{${entries.map(([name, fieldValue]) => `${JSON.stringify(name)}:${canonicalise(fieldValue)}`).join(',')}}`;
93
67
  }
94
68
  const PROMPT_FINGERPRINT = createHash('sha256').update(SYSTEM_PROMPT).digest('hex').slice(0, 16);
95
- /**
96
- * Derives the cache key.
97
- *
98
- * The digest goes in **whole**, rather than as a hand-picked list of fields.
99
- * That is the entire point of this function. The previous implementation listed
100
- * the fields it thought mattered, and four of them drifted: they reached the
101
- * model but not the key, so two shoppers with genuinely different histories
102
- * collided and were served each other's component. Hashing the whole digest
103
- * makes that class of bug unreachable — a field cannot be forgotten here,
104
- * because nothing is named here.
105
- *
106
- * The cost is a lower hit rate than a hand-tuned key would give, since every
107
- * signal now moves the key. That is the right way round: a key that is too
108
- * specific wastes money, and a key that is too loose shows one shopper another
109
- * shopper's page. Raising the hit rate means deliberately coarsening the digest
110
- * itself, which is a decision to make against measurements rather than by
111
- * guessing here.
112
- *
113
- * Candidates enter as SKUs only. Their titles, prices and ratings reach the
114
- * model too, but including them would churn the key on every price change for
115
- * copy that would almost always come back the same. The consequence is bounded
116
- * and worth stating: within one TTL, a price change does not refresh the
117
- * generated copy. It cannot show a stale price — prices are read from the live
118
- * catalog at render time, never from the model.
119
- */
120
- export function specCacheKey(digest, candidateSkus, providerId) {
69
+ export function specCacheKey(digest, candidateSkus, provider) {
121
70
  const material = canonicalise({
122
- // The spec's own version, so a shape change cannot read entries written by
123
- // the previous shape out of a shared store that outlives a deploy.
124
71
  specVersion: SPEC_VERSION,
125
72
  prompt: PROMPT_FINGERPRINT,
126
- provider: providerId,
73
+ provider,
127
74
  digest,
128
75
  candidates: candidateSkus.toSorted(),
129
76
  });
130
77
  return createHash('sha256').update(material).digest('hex').slice(0, 32);
131
78
  }
132
- // Leaves out the fields that make a key personal: who the shopper is, what they
133
- // liked, viewed or searched for. Candidates go too, because every shopper's list
134
- // is different — that is safe because the SKUs in a cohort spec get replaced
135
- // before the page is served.
136
- export function cohortCacheKey(digest, candidateSkus, providerId) {
79
+ export function cohortCacheKey(digest, candidateSkus, provider) {
137
80
  const material = canonicalise({
138
81
  specVersion: SPEC_VERSION,
139
82
  prompt: PROMPT_FINGERPRINT,
140
- provider: providerId,
83
+ provider,
141
84
  segment: digest.segment ?? null,
142
85
  surface: digest.surface,
143
86
  slot: digest.slot,
144
87
  locale: digest.locale,
145
88
  maxItems: digest.maxItems,
146
89
  isColdStart: digest.isColdStart,
147
- // The page being looked at, so copy written for a backpack page is not
148
- // served on a tent page.
149
90
  currentCategory: digest.currentCategory ?? null,
150
91
  topCategory: digest.categoryAffinity[0]?.category ?? null,
151
- // The model is shown these, so they belong in the key. Normally they come
152
- // from the page and everyone on it shares them. A shop that picks
153
- // candidates per shopper gets smaller cohorts, which is the honest result:
154
- // its prompt really is personal.
155
92
  candidates: candidateSkus.toSorted(),
156
93
  });
157
94
  return createHash('sha256').update(material).digest('hex').slice(0, 32);
@@ -1 +1 @@
1
- {"version":3,"file":"spec-cache.js","sourceRoot":"","sources":["../src/spec-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAiDlD,SAAS,uBAAuB,CAAC,IAAY,EAAE,KAAa;IAC1D,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO;IAEjD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,CAAC,CAAC,0EAA0E;QAC5E,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,oDAAoD,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC;AAClG,CAAC;AAOD;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAO,GAA2B,EAAE;IACxE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAEhD,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,0EAA0E;IAC1E,yEAAyE;IACzE,oEAAoE;IACpE,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxC,uBAAuB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,UAAU,CAAC,+CAA+C,UAAU,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE9C,OAAO;QACL,KAAK,CAAC,GAAG,CAAC,GAAG;YACX,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,CAAC,KAAK;gBAAE,OAAO,SAAS,CAAC;YAE7B,IAAI,KAAK,CAAC,SAAS,IAAI,GAAG,EAAE,EAAE,CAAC;gBAC7B,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,0EAA0E;YAC1E,qEAAqE;YACrE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxB,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM;YACnB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;YAEvD,OAAO,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC;gBACjC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACrC,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM;gBACvB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,GAAG;YACd,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO;QACL,KAAK,CAAC,GAAG;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,CAAC,GAAG;YACP,wBAAwB;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;IACxF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAE1E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;SAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC;SACpD,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACrH,CAAC;AAED,MAAM,kBAAkB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAEjG;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAoB,EACpB,aAAgC,EAChC,UAAkB;IAElB,MAAM,QAAQ,GAAG,YAAY,CAAC;QAC5B,2EAA2E;QAC3E,mEAAmE;QACnE,WAAW,EAAE,YAAY;QACzB,MAAM,EAAE,kBAAkB;QAC1B,QAAQ,EAAE,UAAU;QACpB,MAAM;QACN,UAAU,EAAE,aAAa,CAAC,QAAQ,EAAE;KACrC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,gFAAgF;AAChF,iFAAiF;AACjF,6EAA6E;AAC7E,6BAA6B;AAC7B,MAAM,UAAU,cAAc,CAC5B,MAAoB,EACpB,aAAgC,EAChC,UAAkB;IAElB,MAAM,QAAQ,GAAG,YAAY,CAAC;QAC5B,WAAW,EAAE,YAAY;QACzB,MAAM,EAAE,kBAAkB;QAC1B,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,uEAAuE;QACvE,yBAAyB;QACzB,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;QAC/C,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI;QACzD,0EAA0E;QAC1E,kEAAkE;QAClE,2EAA2E;QAC3E,iCAAiC;QACjC,UAAU,EAAE,aAAa,CAAC,QAAQ,EAAE;KACrC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"spec-cache.js","sourceRoot":"","sources":["../src/spec-cache.ts"],"names":[],"mappings":"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"}