@rudra-js/core 0.6.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 (66) hide show
  1. package/README.md +13 -12
  2. package/dist/claim-screening.d.ts +0 -23
  3. package/dist/claim-screening.d.ts.map +1 -1
  4. package/dist/claim-screening.js +0 -69
  5. package/dist/claim-screening.js.map +1 -1
  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 +10 -52
  9. package/dist/component-generator.js.map +1 -1
  10. package/dist/component-spec.d.ts +2 -110
  11. package/dist/component-spec.d.ts.map +1 -1
  12. package/dist/component-spec.js +0 -78
  13. package/dist/component-spec.js.map +1 -1
  14. package/dist/fallback-component.d.ts +0 -9
  15. package/dist/fallback-component.d.ts.map +1 -1
  16. package/dist/fallback-component.js +0 -11
  17. package/dist/fallback-component.js.map +1 -1
  18. package/dist/fit-to-shopper.d.ts.map +1 -1
  19. package/dist/fit-to-shopper.js +1 -11
  20. package/dist/fit-to-shopper.js.map +1 -1
  21. package/dist/index.d.ts +0 -7
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +0 -7
  24. package/dist/index.js.map +1 -1
  25. package/dist/model-prompt.d.ts +0 -29
  26. package/dist/model-prompt.d.ts.map +1 -1
  27. package/dist/model-prompt.js +0 -79
  28. package/dist/model-prompt.js.map +1 -1
  29. package/dist/product-selection.d.ts +0 -23
  30. package/dist/product-selection.d.ts.map +1 -1
  31. package/dist/product-selection.js +0 -19
  32. package/dist/product-selection.js.map +1 -1
  33. package/dist/provider.d.ts +0 -48
  34. package/dist/provider.d.ts.map +1 -1
  35. package/dist/provider.js +0 -5
  36. package/dist/provider.js.map +1 -1
  37. package/dist/reconciliation.d.ts +1 -44
  38. package/dist/reconciliation.d.ts.map +1 -1
  39. package/dist/reconciliation.js +2 -109
  40. package/dist/reconciliation.js.map +1 -1
  41. package/dist/signal-digest.d.ts +0 -27
  42. package/dist/signal-digest.d.ts.map +1 -1
  43. package/dist/signal-digest.js +1 -50
  44. package/dist/signal-digest.js.map +1 -1
  45. package/dist/spec-cache.d.ts +6 -80
  46. package/dist/spec-cache.d.ts.map +1 -1
  47. package/dist/spec-cache.js +1 -54
  48. package/dist/spec-cache.js.map +1 -1
  49. package/dist/tracking-input.d.ts +0 -49
  50. package/dist/tracking-input.d.ts.map +1 -1
  51. package/dist/tracking-input.js +0 -102
  52. package/dist/tracking-input.js.map +1 -1
  53. package/package.json +7 -6
  54. package/src/claim-screening.ts +17 -69
  55. package/src/component-generator.ts +24 -133
  56. package/src/component-spec.ts +15 -103
  57. package/src/fallback-component.ts +0 -11
  58. package/src/fit-to-shopper.ts +3 -12
  59. package/src/index.ts +0 -8
  60. package/src/model-prompt.ts +1 -82
  61. package/src/product-selection.ts +5 -43
  62. package/src/provider.ts +4 -53
  63. package/src/reconciliation.ts +12 -112
  64. package/src/signal-digest.ts +5 -64
  65. package/src/spec-cache.ts +8 -98
  66. package/src/tracking-input.ts +11 -108
@@ -1,12 +1,6 @@
1
1
  import { verify } from '@rudra-js/attested';
2
2
  import { ALLOWED_PHRASES, claimIn, hostFacts } from './claim-screening.js';
3
3
  import { engagedCategories } from './signal-digest.js';
4
- /**
5
- * Nothing here trusts the model. Repair, not rejection, is the default: text is
6
- * truncated and unverifiable claims are downgraded, and only an empty result
7
- * fails outright.
8
- */
9
- /** Truncation ceilings. Not in the schema — a provider's strict mode rejects length bounds. See `component-spec.ts`. */
10
4
  const CLAMP = {
11
5
  headline: 90,
12
6
  subheadline: 140,
@@ -17,12 +11,9 @@ const CLAMP = {
17
11
  bannerText: 160,
18
12
  copyBody: 420,
19
13
  rationale: 300,
20
- // Not rendered anywhere — this is the SKU as it reads back in a violation.
21
14
  violationSku: 32,
22
15
  };
23
- /** More than this and the component stops being a component. */
24
16
  export const MAX_BLOCKS = 4;
25
- /** The fill pass calls this too: one past the cap never renders, so nothing is worth reserving for it. */
26
17
  export function capBlocks(blocks) {
27
18
  return blocks.slice(0, MAX_BLOCKS);
28
19
  }
@@ -30,27 +21,11 @@ function clamp(value, limit) {
30
21
  const collapsed = value.trim().replace(/\s+/g, ' ');
31
22
  if (collapsed.length <= limit)
32
23
  return collapsed;
33
- // The ellipsis counts against the limit, so leave room for it.
34
24
  const cut = collapsed.slice(0, limit - 1);
35
25
  const lastSpace = cut.lastIndexOf(' ');
36
26
  const base = lastSpace > limit * 0.6 ? cut.slice(0, lastSpace) : cut;
37
27
  return `${base.replace(/[.,;:!?-]+$/, '')}…`;
38
28
  }
39
- function clampNullable(value, limit) {
40
- if (value === null)
41
- return null;
42
- const clamped = clamp(value, limit);
43
- return clamped.length === 0 ? null : clamped;
44
- }
45
- /**
46
- * A thumbs-down, and the product on the screen right now. No block may hold one
47
- * of these, a bundle included.
48
- *
49
- * Read from the payload rather than the digest on purpose. `DIGEST_LIMITS`
50
- * trims each history to what fits in a prompt, and a shopper with thirteen
51
- * dislikes would otherwise be shown the thirteenth. The cap exists to bound
52
- * what the model is told, not what the shopper may be shown.
53
- */
54
29
  function refusedEverywhere(input) {
55
30
  const refused = new Set();
56
31
  for (const signal of input.signals.dislikes)
@@ -59,17 +34,6 @@ function refusedEverywhere(input) {
59
34
  refused.add(input.context.currentSku);
60
35
  return refused;
61
36
  }
62
- /**
63
- * SKUs that must never be recommended, whatever chose them.
64
- *
65
- * Everything above plus what the shopper already has, read from the payload for
66
- * the same reason: a shopper with nine purchases must not be sold the ninth back.
67
- *
68
- * Exported because the deterministic selector applies the same rule when it
69
- * picks. Two copies of "never recommend these" would drift, and the pair that
70
- * drifted would be the model path and the fallback path — the two whose
71
- * comparability the whole evaluation depends on.
72
- */
73
37
  export function neverRecommend(input) {
74
38
  const { signals } = input;
75
39
  const blocked = refusedEverywhere(input);
@@ -99,22 +63,16 @@ function verifyBasis(basis, product, digest, engaged) {
99
63
  case 'complements_purchase':
100
64
  return digest.purchasedSkus.length > 0;
101
65
  case 'liked_category':
102
- // Affinity alone is not enough: it scores the category the shopper is
103
- // standing in, and standing somewhere is not liking it. That claim is
104
- // `similar_to_current`, which says so honestly.
105
66
  return (engaged.has(product.category) &&
106
67
  digest.categoryAffinity.some((affinity) => affinity.category === product.category));
107
68
  case 'similar_to_current':
108
69
  return digest.currentCategory === product.category;
109
70
  case 'popular':
110
- // Makes no claim about this shopper, so there is nothing to check.
111
71
  return true;
112
72
  }
113
73
  }
114
- /** Anything attested reads as a numeral — ½ ² Ⅲ included, which it reports rather than ignores. */
115
74
  const NUMERAL = /[\p{Nd}\p{No}\p{Nl}]/u;
116
75
  const NO_FACTS = [];
117
- /** The budget and the de-duplication set are global to a spec, not to a block. */
118
76
  function createPlacementTracker(maxItems, facts) {
119
77
  const placedSkus = new Set();
120
78
  const violations = [];
@@ -136,28 +94,17 @@ function createPlacementTracker(maxItems, facts) {
136
94
  },
137
95
  };
138
96
  }
139
- /**
140
- * Clamps, then screens. The cap has to happen here: clamping first can cut the word that
141
- * makes a claim a claim, so "Ridge picks, only 2 left!" renders past the stock pattern.
142
- *
143
- * Three passes, most specific first. Core's patterns name one of the five kinds; `quantity`
144
- * is the only proof in the stack, every numeral having to be one the shop supplied; `wording`
145
- * is a second denylist and the weakest, so it answers last.
146
- */
147
97
  function screenClaim(value, limit, field, tracker, facts = tracker.facts) {
148
98
  if (value === null)
149
99
  return null;
150
100
  const clamped = clamp(value, limit);
151
101
  if (clamped.length === 0)
152
102
  return null;
153
- // Both ways round: clamping collapses whitespace, so "in stock" only reads as a claim after.
154
103
  const kind = claimIn(value) ?? claimIn(clamped);
155
104
  if (kind !== null) {
156
105
  tracker.record(`unverifiable-claim:${kind}:${field}`);
157
106
  return null;
158
107
  }
159
- // Nothing for the quantity layer to weigh without a numeral, whatever the facts say,
160
- // and reading the fact list to prove that again per field is most of what this costs.
161
108
  const weighed = NUMERAL.test(clamped) ? facts : NO_FACTS;
162
109
  const result = verify(clamped, { values: weighed, allowedPhrases: ALLOWED_PHRASES });
163
110
  if (!result.quantity.supported) {
@@ -170,25 +117,11 @@ function screenClaim(value, limit, field, tracker, facts = tracker.facts) {
170
117
  }
171
118
  return clamped;
172
119
  }
173
- /**
174
- * Emptying a field that cannot be null hands it to the rule that already drops a block,
175
- * or a whole generation, whose text clamps to nothing — so a banner reading "20% off"
176
- * disappears rather than rendering blank.
177
- */
178
120
  function screenRequired(value, limit, field, tracker) {
179
121
  return screenClaim(value, limit, field, tracker) ?? '';
180
122
  }
181
- /**
182
- * Does not consume budget — the caller does that once it commits.
183
- *
184
- * Order matters. The budget is checked last because it is the least specific cause:
185
- * these strings are the evaluation signal, and reporting a hallucinated SKU as
186
- * `budget:dropped` would understate how often the model invents products.
187
- */
188
123
  function rejectionFor(sku, allowlist, tracker) {
189
- // A rejected SKU is whatever the model wrote, and the schema cannot bound it.
190
124
  const named = clamp(sku, CLAMP.violationSku);
191
- // Either hallucinated or out of stock. Either way it cannot render.
192
125
  if (!allowlist.allowed.has(sku))
193
126
  return `unknown-sku:${named}`;
194
127
  if (allowlist.blocked.has(sku))
@@ -208,27 +141,20 @@ function reconcileItems(items, allowlist, candidatesBySku, digest, engaged, trac
208
141
  continue;
209
142
  }
210
143
  const product = candidatesBySku.get(item.sku);
211
- // rejectionFor already proved the SKU is an in-stock candidate.
212
144
  if (!product)
213
145
  continue;
214
146
  tracker.place(item.sku);
215
147
  const hasSupportedBasis = verifyBasis(item.basis, product, digest, engaged);
216
148
  if (!hasSupportedBasis)
217
149
  tracker.record(`unsupported-basis:${item.basis}:${item.sku}`);
218
- // Our sentence, not the model's. It has to match, so a lookalike is still screened.
219
150
  const isOurs = item.reason !== null && ourReasons.get(item.sku) === item.reason;
220
151
  const own = tracker.factsFor(item.sku);
221
- const clampedReason = clampNullable(item.reason, CLAMP.reason);
222
- // The prose exists to state the basis. If the basis did not hold, the prose
223
- // is untrue — and the badge is prose too. "You viewed this" beside a
224
- // downgraded pick says the same thing the dropped sentence did.
225
152
  let reason = null;
226
153
  let badge = null;
227
154
  if (hasSupportedBasis) {
228
155
  reason = isOurs
229
- ? clampedReason
156
+ ? clamp(item.reason ?? '', CLAMP.reason) || null
230
157
  : screenClaim(item.reason, CLAMP.reason, `reason:${item.sku}`, tracker, own);
231
- // The schema's own example badge was "Back in stock" — a stock claim, and it renders.
232
158
  badge = screenClaim(item.badge, CLAMP.badge, `badge:${item.sku}`, tracker, own);
233
159
  }
234
160
  kept.push({
@@ -287,17 +213,6 @@ function chooseBundle(bundles, allowlist, digest, candidatesBySku, tracker) {
287
213
  }
288
214
  return best;
289
215
  }
290
- /**
291
- * The set this shopper should get, decided before anything is placed.
292
- *
293
- * The generator needs the answer early, so it can keep the set's products out
294
- * of the grid and keep room for them. `chooseBundle` stays private: this hands
295
- * out the choice, not the machinery behind it.
296
- *
297
- * `spokenFor` is what the blocks above the bundle block will have placed by the
298
- * time it is reached. Placing it here first is what makes the two choices agree:
299
- * a set is only pre-chosen if reconciliation could still reach for it.
300
- */
301
216
  export function bundleForShopper(input, digest, spokenFor) {
302
217
  const allowlist = buildAllowlist(input);
303
218
  const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
@@ -306,14 +221,6 @@ export function bundleForShopper(input, digest, spokenFor) {
306
221
  tracker.place(sku);
307
222
  return chooseBundle(input.bundles, allowlist, digest, candidatesBySku, tracker);
308
223
  }
309
- /**
310
- * The hero products these blocks will really place.
311
- *
312
- * A hero keeps the product the model named — its headline was written about
313
- * that product — so it spends a slot of the item budget the grid cannot have.
314
- * One this shopper cannot see is dropped below and spends nothing, so it is not
315
- * counted here either.
316
- */
317
224
  export function placeableHeroSkus(blocks, input) {
318
225
  const allowlist = buildAllowlist(input);
319
226
  const skus = [];
@@ -338,14 +245,12 @@ function reconcileBlock(block, allowlist, candidatesBySku, digest, engaged, bund
338
245
  const rejection = rejectionFor(sku, allowlist, tracker);
339
246
  if (rejection) {
340
247
  tracker.record(rejection);
341
- // A hero without its product is still a legitimate headline.
342
248
  sku = null;
343
249
  }
344
250
  else {
345
251
  tracker.place(sku);
346
252
  }
347
253
  }
348
- // A hero with no headline and no product is the empty region every other kind drops for.
349
254
  const headline = screenRequired(block.headline, CLAMP.headline, 'hero-headline', tracker);
350
255
  if (headline.length === 0 && sku === null) {
351
256
  tracker.record('empty-block:hero');
@@ -368,7 +273,6 @@ function reconcileBlock(block, allowlist, candidatesBySku, digest, engaged, bund
368
273
  return {
369
274
  kind: 'grid',
370
275
  title: screenClaim(block.title, CLAMP.blockTitle, 'grid-title', tracker),
371
- // Never leave a grid wider than it has items to fill.
372
276
  columns: Math.min(block.columns, Math.max(2, items.length)),
373
277
  items,
374
278
  };
@@ -423,7 +327,6 @@ function reconcileBlock(block, allowlist, candidatesBySku, digest, engaged, bund
423
327
  title: screenClaim(block.title, CLAMP.blockTitle, 'bundle-title', tracker),
424
328
  body: screenClaim(block.body, CLAMP.subheadline, 'bundle-body', tracker),
425
329
  ctaLabel: screenClaim(block.ctaLabel, CLAMP.ctaLabel, 'bundle-cta', tracker),
426
- // The model's bundleId is ignored on purpose.
427
330
  bundleId: chosen.id,
428
331
  };
429
332
  }
@@ -435,16 +338,7 @@ function showsAnyProduct(blocks) {
435
338
  (block.kind === 'hero' && block.sku !== null) ||
436
339
  (block.kind === 'bundle' && block.bundleId !== null));
437
340
  }
438
- export function reconcileSpec(generated, input, digest,
439
- /**
440
- * The reason this request wrote itself, by SKU: the host's own `reason` on a
441
- * candidate, or the sentence the selector wrote when there was none. Neither is the
442
- * model's words, and the deterministic component renders the same sentence unscreened.
443
- *
444
- * Only `fitToShopper` fills it, so in `per-shopper` mode it is empty and every
445
- * reason is the model's, including one that happens to read the same.
446
- */
447
- ourReasons = new Map()) {
341
+ export function reconcileSpec(generated, input, digest, ourReasons = new Map()) {
448
342
  const allowlist = buildAllowlist(input);
449
343
  const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
450
344
  const engaged = engagedCategories(input);
@@ -465,7 +359,6 @@ ourReasons = new Map()) {
465
359
  blocks,
466
360
  rationale: screenRequired(generated.rationale, CLAMP.rationale, 'rationale', tracker),
467
361
  };
468
- // Recorded separately: no products and no headline are different failures.
469
362
  if (!showsAnyProduct(blocks))
470
363
  tracker.record('unusable:no-products');
471
364
  if (spec.headline.length === 0)
@@ -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,15 +43,6 @@ export declare const DIGEST_LIMITS: {
61
43
  readonly affinity: 6;
62
44
  readonly interactionTypes: 8;
63
45
  };
64
- /**
65
- * Categories this shopper did something in — bought, liked, carted or viewed.
66
- *
67
- * Not the same thing as `categoryAffinity`, which also scores the category the
68
- * page itself is in. That scoring is right for ranking and wrong as evidence:
69
- * a first-time visitor standing on a tent page has a tent affinity and has
70
- * never touched a tent, so a sentence claiming they keep coming back to tents
71
- * is checked against this instead.
72
- */
73
46
  export declare function engagedCategories(input: TrackingInput): Set<string>;
74
47
  export declare function buildDigest(input: TrackingInput): SignalDigest;
75
48
  export declare function toCohortDigest(digest: SignalDigest): SignalDigest;
@@ -1 +1 @@
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;;;;;;;;;;;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;AAsGX;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAgBnE;AAqED,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,7 +8,6 @@ export const DIGEST_LIMITS = {
12
8
  affinity: 6,
13
9
  interactionTypes: 8,
14
10
  };
15
- /** How much intent each kind of signal implies. */
16
11
  const SIGNAL_WEIGHTS = {
17
12
  purchase: 5,
18
13
  like: 4,
@@ -20,14 +15,7 @@ const SIGNAL_WEIGHTS = {
20
15
  view: 1,
21
16
  dislike: -6,
22
17
  };
23
- /**
24
- * A signal that does not state a weight counts at full strength. This lives in
25
- * one place on purpose: when the default was written out at each call site, the
26
- * merge step defaulted to 0 while scoring defaulted to 1, and an unweighted view
27
- * merged with a `weight: 0.2` view scored as though both were 0.2.
28
- */
29
18
  const effectiveWeight = (signal) => signal.weight ?? 1;
30
- /** Most recent first. A signal with no timestamp sorts last. */
31
19
  function byMostRecent(left, right) {
32
20
  return (right.at ?? 0) - (left.at ?? 0);
33
21
  }
@@ -64,9 +52,6 @@ function computeCategoryAffinity(input, candidatesBySku) {
64
52
  for (const inCart of signals.cart) {
65
53
  addScore(categoryOf(inCart, candidatesBySku), SIGNAL_WEIGHTS.cart * effectiveWeight(inCart));
66
54
  }
67
- // Merged first, deliberately — see `mergeViewsBySku`. Views are noisy and
68
- // repeat cheaply, so the tenth view counts for far less than the second, and
69
- // log scaling keeps a single obsessive session from drowning out a purchase.
70
55
  for (const view of mergeViewsBySku(signals.mostViewed)) {
71
56
  const scaledViews = Math.log2(1 + view.views);
72
57
  addScore(categoryOf(view, candidatesBySku), SIGNAL_WEIGHTS.view * scaledViews * view.weight);
@@ -74,8 +59,6 @@ function computeCategoryAffinity(input, candidatesBySku) {
74
59
  for (const dislike of signals.dislikes) {
75
60
  addScore(categoryOf(dislike, candidatesBySku), SIGNAL_WEIGHTS.dislike * effectiveWeight(dislike));
76
61
  }
77
- // The category the shopper is standing in right now is itself evidence — for
78
- // ranking. It is not evidence that they like it: see `engagedCategories`.
79
62
  addScore(input.context.currentCategory, SIGNAL_WEIGHTS.like);
80
63
  const affinities = [];
81
64
  for (const [category, score] of scoreByCategory) {
@@ -87,15 +70,6 @@ function computeCategoryAffinity(input, candidatesBySku) {
87
70
  .toSorted((left, right) => right.score - left.score)
88
71
  .slice(0, DIGEST_LIMITS.affinity);
89
72
  }
90
- /**
91
- * Categories this shopper did something in — bought, liked, carted or viewed.
92
- *
93
- * Not the same thing as `categoryAffinity`, which also scores the category the
94
- * page itself is in. That scoring is right for ranking and wrong as evidence:
95
- * a first-time visitor standing on a tent page has a tent affinity and has
96
- * never touched a tent, so a sentence claiming they keep coming back to tents
97
- * is checked against this instead.
98
- */
99
73
  export function engagedCategories(input) {
100
74
  const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
101
75
  const { signals } = input;
@@ -112,16 +86,6 @@ export function engagedCategories(input) {
112
86
  }
113
87
  return categories;
114
88
  }
115
- /**
116
- * Collapses every view record for one SKU into a single running total.
117
- *
118
- * This has to happen before any scoring. A host is free to emit one record per
119
- * page view rather than a running count, and scoring each record separately
120
- * would let thirty `views: 1` records outweigh one `views: 30` record six times
121
- * over, defeating the sub-linear scaling in `computeCategoryAffinity` entirely.
122
- * Merging first makes the score depend on how much someone looked, not on how
123
- * their tracking pipeline happens to batch.
124
- */
125
89
  function mergeViewsBySku(views) {
126
90
  const totalsBySku = new Map();
127
91
  for (const view of views) {
@@ -149,14 +113,7 @@ function mostViewedProducts(views) {
149
113
  const top = mergeViewsBySku(views)
150
114
  .toSorted((left, right) => right.views - left.views)
151
115
  .slice(0, DIGEST_LIMITS.viewed);
152
- const products = [];
153
- for (const merged of top) {
154
- const product = { sku: merged.sku, views: merged.views };
155
- if (merged.dwellMs !== undefined)
156
- product.dwellMs = merged.dwellMs;
157
- products.push(product);
158
- }
159
- return products;
116
+ return top.map(({ sku, views: count, dwellMs }) => dwellMs === undefined ? { sku, views: count } : { sku, views: count, dwellMs });
160
117
  }
161
118
  function countByInteractionType(interactions) {
162
119
  const countByType = new Map();
@@ -176,8 +133,6 @@ export function buildDigest(input) {
176
133
  const purchasedSkus = recentUniqueSkus(signals.lastPurchased, DIGEST_LIMITS.purchased);
177
134
  const cartSkus = recentUniqueSkus(signals.cart, DIGEST_LIMITS.cart);
178
135
  const topViewed = mostViewedProducts(signals.mostViewed);
179
- // Searches say what a shopper wants; they do not say they engaged with any
180
- // product, so they do not lift a shopper out of cold start on their own.
181
136
  const evidenceCount = likedSkus.length +
182
137
  dislikedSkus.length +
183
138
  purchasedSkus.length +
@@ -205,12 +160,8 @@ export function buildDigest(input) {
205
160
  isColdStart: evidenceCount === 0,
206
161
  };
207
162
  }
208
- // Everything the cohort key leaves out has to leave the prompt too, or the
209
- // first shopper's searches and history end up shaping copy that is cached and
210
- // served to everyone else in their cohort.
211
163
  export function toCohortDigest(digest) {
212
164
  const top = digest.categoryAffinity[0];
213
- // Listed rather than spread, so what survives is the thing you read.
214
165
  const cohort = {
215
166
  userId: 'cohort',
216
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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"}