@rudra-js/core 0.4.0 → 0.5.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/README.md +88 -11
- package/dist/component-generator.d.ts.map +1 -1
- package/dist/component-generator.js +12 -11
- package/dist/component-generator.js.map +1 -1
- package/dist/fit-to-shopper.d.ts +1 -1
- package/dist/fit-to-shopper.d.ts.map +1 -1
- package/dist/fit-to-shopper.js +4 -3
- package/dist/fit-to-shopper.js.map +1 -1
- package/dist/model-prompt.d.ts +13 -1
- package/dist/model-prompt.d.ts.map +1 -1
- package/dist/model-prompt.js +15 -3
- package/dist/model-prompt.js.map +1 -1
- package/dist/product-selection.d.ts +1 -3
- package/dist/product-selection.d.ts.map +1 -1
- package/dist/product-selection.js +0 -1
- package/dist/product-selection.js.map +1 -1
- package/dist/reconciliation.d.ts +19 -4
- package/dist/reconciliation.d.ts.map +1 -1
- package/dist/reconciliation.js +125 -32
- package/dist/reconciliation.js.map +1 -1
- package/package.json +3 -1
- package/src/component-generator.ts +12 -11
- package/src/fit-to-shopper.ts +4 -2
- package/src/model-prompt.ts +16 -3
- package/src/product-selection.ts +1 -4
- package/src/reconciliation.ts +145 -31
package/dist/reconciliation.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { verify } from '@rudra-js/attested';
|
|
2
|
+
import { offeredCandidates } from './model-prompt.js';
|
|
1
3
|
/**
|
|
2
4
|
* Reconciliation — the boundary between what the model said and what renders.
|
|
3
5
|
*
|
|
@@ -122,14 +124,11 @@ function verifyBasis(basis, product, digest) {
|
|
|
122
124
|
* model writes is checked here — a heading is not a safer place for a claim
|
|
123
125
|
* than the small print under it.
|
|
124
126
|
*
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
* the first — "20% off", not "20%"; "rated 4.8", not "rated". A careful
|
|
131
|
-
* rewording will get past this, and that is the trade we want: missing one
|
|
132
|
-
* claim is better than deleting honest copy on every page.
|
|
127
|
+
* These patterns are the first of three passes and the only one that names which
|
|
128
|
+
* of the five kinds a sentence claimed, so they read the domain: "20% off", not
|
|
129
|
+
* "20%"; "rated 4.8", not "rated". A specification walks past all of them and is
|
|
130
|
+
* then weighed by @rudra-js/attested, which reads no domain at all and asks only
|
|
131
|
+
* whether the shop supplied the number.
|
|
133
132
|
*
|
|
134
133
|
* One rule per line, because each line is a separate judgement about where the
|
|
135
134
|
* boundary sits and each one wants its own reason written next to it.
|
|
@@ -154,14 +153,20 @@ const CLAIM_PATTERNS = [
|
|
|
154
153
|
/\brated\s+(?:[0-5]\.\d|(?:[0-5]|three|four|five)\s+(?:stars?|out of))\b/,
|
|
155
154
|
// How many other people bought or liked it is a customer claim too.
|
|
156
155
|
/\bbest[\s-]?sell(?:er|ers|ing)\b/,
|
|
156
|
+
// The words a model reaches for when "best" is banned. Each branch carries its own
|
|
157
|
+
// \b — one in front of the group demands a word character before the #, never there.
|
|
158
|
+
/(?:\bnumber one|\bno\.? ?1|#\s?1)[\s-]?sell(?:er|ers|ing)\b/,
|
|
157
159
|
/\bloved by (?:thousands|hundreds|millions|\d)/,
|
|
158
160
|
],
|
|
159
161
|
},
|
|
160
162
|
{
|
|
161
163
|
kind: 'price',
|
|
162
164
|
patterns: [
|
|
163
|
-
|
|
165
|
+
// No digit beside it: asking for one let "$thirty-nine and it is yours" through.
|
|
166
|
+
/[$£€¥₹]/,
|
|
164
167
|
/\b\d+(?:\.\d+)?\s?(?:usd|eur|gbp|dollars?|pounds?|euros?)\b/,
|
|
168
|
+
// The same spelled out. "pounds" is left off on purpose — a pack weighs two of those.
|
|
169
|
+
/\bdollars?\b|\beuros?\b/,
|
|
165
170
|
// The same codes on the other side of the number: "USD 20", "EUR 5.99".
|
|
166
171
|
/\b(?:usd|eur|gbp)\s?\d/,
|
|
167
172
|
// The krona is spelled out rather than drawn, so it needs a number beside it.
|
|
@@ -265,9 +270,10 @@ const CONFUSABLES = {
|
|
|
265
270
|
* points and the controls. Cf and Default_Ignorable each hold characters the
|
|
266
271
|
* other does not.
|
|
267
272
|
*
|
|
268
|
-
* The same class @rudra-js/attested strips in its own `hidden.ts`.
|
|
269
|
-
*
|
|
270
|
-
*
|
|
273
|
+
* The same class @rudra-js/attested strips in its own `hidden.ts`. The second copy stays
|
|
274
|
+
* now that core calls attested, because it feeds core's own patterns and those reach two
|
|
275
|
+
* things attested's phrase list does not hold: "20% οff" spelled with a Greek omicron,
|
|
276
|
+
* and "PRİCED to move". Widening one and not the other is still the mistake to watch for.
|
|
271
277
|
*/
|
|
272
278
|
const INVISIBLE = /[\p{Cf}\p{Default_Ignorable_Code_Point}\p{Cc}]/gu;
|
|
273
279
|
/**
|
|
@@ -302,6 +308,68 @@ function normaliseForClaims(text) {
|
|
|
302
308
|
folded += CONFUSABLES[char] ?? char;
|
|
303
309
|
return folded;
|
|
304
310
|
}
|
|
311
|
+
/**
|
|
312
|
+
* Wording attested bans that this project has already ruled is not a claim. An allowance
|
|
313
|
+
* forgives a banned phrase sitting inside it, so an entry ending on a preposition — "extra
|
|
314
|
+
* clearance for" — forgives whatever follows it. Exported so a test can hold the list
|
|
315
|
+
* against attested's own.
|
|
316
|
+
*/
|
|
317
|
+
export const ALLOWED_PHRASES = ['does not feel cheap', "doesn't feel cheap", 'last few miles'];
|
|
318
|
+
/** Only a string with one of these in it can stand behind a numeral. */
|
|
319
|
+
const DIGIT = /\p{Nd}/u;
|
|
320
|
+
/** Anything attested reads as a numeral — ½ ² Ⅲ included, which it reports rather than ignores. */
|
|
321
|
+
const NUMERAL = /[\p{Nd}\p{No}\p{Nl}]/u;
|
|
322
|
+
const NO_FACTS = [];
|
|
323
|
+
/** A fact whose whole content is a number in exponent notation. attested lays those out in place. */
|
|
324
|
+
const BARE_EXPONENT = /^[+-]?\d+(?:\.\d+)?[eE]([+-]?\d+)$/;
|
|
325
|
+
/** Wide enough for every finite JavaScript number, and for anything a shop sells. */
|
|
326
|
+
const MAX_EXPONENT = 1000;
|
|
327
|
+
// `1e2000000000` is twelve characters and lays out into a run long enough to end the process.
|
|
328
|
+
// attested caps that itself, but it is a peer dependency and a host's copy of it may be older.
|
|
329
|
+
function canLayOut(fact) {
|
|
330
|
+
const match = BARE_EXPONENT.exec(fact.trim());
|
|
331
|
+
if (match === null)
|
|
332
|
+
return true;
|
|
333
|
+
return Math.abs(Number(match[1] ?? '')) <= MAX_EXPONENT;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* The numbers the shop published about one product: its category and tags, only the strings
|
|
337
|
+
* carrying a digit. Exported so a test can pin what never reaches attested.
|
|
338
|
+
*/
|
|
339
|
+
export function productFacts(product) {
|
|
340
|
+
const facts = [];
|
|
341
|
+
if (DIGIT.test(product.category) && canLayOut(product.category))
|
|
342
|
+
facts.push(product.category);
|
|
343
|
+
for (const tag of product.tags) {
|
|
344
|
+
if (DIGIT.test(tag) && canLayOut(tag))
|
|
345
|
+
facts.push(tag);
|
|
346
|
+
}
|
|
347
|
+
return facts;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* The shop's own numbers for this request, for attested to check numerals against.
|
|
351
|
+
*
|
|
352
|
+
* `offeredCandidates` rather than `input.candidates` — out of stock or past the prompt's cap
|
|
353
|
+
* means a product the model never saw. A title and a rating it is shown but told never to
|
|
354
|
+
* repeat, so a numeral out of one is one it was told not to write. The browsed category comes
|
|
355
|
+
* from the request rather than the catalogue, so a host passing a URL segment through would
|
|
356
|
+
* hand this list to whoever types the URL.
|
|
357
|
+
*
|
|
358
|
+
* `pooled` is the soft part of the check: one candidate's "40 litre" backs "take 40 off"
|
|
359
|
+
* written about another. A `reason` and a `badge` read `bySku`, because they sit under a
|
|
360
|
+
* named product — off the pooled list, a badge reading "Only 2" stood on a tent's tag.
|
|
361
|
+
*/
|
|
362
|
+
function hostFacts(input) {
|
|
363
|
+
const pooled = new Set();
|
|
364
|
+
const bySku = new Map();
|
|
365
|
+
for (const product of offeredCandidates(input)) {
|
|
366
|
+
const own = productFacts(product);
|
|
367
|
+
bySku.set(product.sku, own);
|
|
368
|
+
for (const fact of own)
|
|
369
|
+
pooled.add(fact);
|
|
370
|
+
}
|
|
371
|
+
return { pooled: [...pooled], bySku };
|
|
372
|
+
}
|
|
305
373
|
/** Names the first forbidden claim the text makes, or null when it makes none. */
|
|
306
374
|
function claimIn(text) {
|
|
307
375
|
const normalised = normaliseForClaims(text);
|
|
@@ -321,12 +389,14 @@ function claimIn(text) {
|
|
|
321
389
|
* through every function. The budget and the de-duplication set are global to a
|
|
322
390
|
* spec, not to a block, which is the part that is easy to get wrong.
|
|
323
391
|
*/
|
|
324
|
-
function createPlacementTracker(maxItems) {
|
|
392
|
+
function createPlacementTracker(maxItems, facts) {
|
|
325
393
|
const placedSkus = new Set();
|
|
326
394
|
const violations = [];
|
|
327
395
|
let remaining = maxItems;
|
|
328
396
|
return {
|
|
329
397
|
violations,
|
|
398
|
+
facts: facts.pooled,
|
|
399
|
+
factsFor: (sku) => facts.bySku.get(sku) ?? NO_FACTS,
|
|
330
400
|
get remaining() {
|
|
331
401
|
return remaining;
|
|
332
402
|
},
|
|
@@ -346,15 +416,33 @@ function createPlacementTracker(maxItems) {
|
|
|
346
416
|
* Runs after clamping, so what is screened is exactly what would have rendered.
|
|
347
417
|
* Dropping means what it means everywhere else here: this field becomes null
|
|
348
418
|
* and the rest of the block carries on.
|
|
419
|
+
*
|
|
420
|
+
* Three passes, most specific first. Core's patterns name one of the five kinds; `quantity`
|
|
421
|
+
* is the only proof in the stack, every numeral having to be one the shop supplied; `wording`
|
|
422
|
+
* is a second denylist and the weakest, so it answers last. `facts` defaults to the pooled
|
|
423
|
+
* list, and a field that names one product passes that product's own.
|
|
349
424
|
*/
|
|
350
|
-
function screenClaim(value, field, tracker) {
|
|
425
|
+
function screenClaim(value, field, tracker, facts = tracker.facts) {
|
|
351
426
|
if (value === null)
|
|
352
427
|
return null;
|
|
353
428
|
const kind = claimIn(value);
|
|
354
|
-
if (kind
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
429
|
+
if (kind !== null) {
|
|
430
|
+
tracker.record(`unverifiable-claim:${kind}:${field}`);
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
// Nothing for the quantity layer to weigh without a numeral, whatever the facts say,
|
|
434
|
+
// and reading the fact list to prove that again per field is most of what this costs.
|
|
435
|
+
const weighed = NUMERAL.test(value) ? facts : NO_FACTS;
|
|
436
|
+
const result = verify(value, { values: weighed, allowedPhrases: ALLOWED_PHRASES });
|
|
437
|
+
if (!result.quantity.supported) {
|
|
438
|
+
tracker.record(`unverifiable-claim:quantity:${field}`);
|
|
439
|
+
return null;
|
|
440
|
+
}
|
|
441
|
+
if (!result.wording.supported) {
|
|
442
|
+
tracker.record(`unverifiable-claim:wording:${field}`);
|
|
443
|
+
return null;
|
|
444
|
+
}
|
|
445
|
+
return value;
|
|
358
446
|
}
|
|
359
447
|
/**
|
|
360
448
|
* The same screen for a field that cannot be null. Emptying it hands the field
|
|
@@ -389,7 +477,7 @@ function rejectionFor(sku, allowlist, tracker) {
|
|
|
389
477
|
return `budget:dropped:${named}`;
|
|
390
478
|
return null;
|
|
391
479
|
}
|
|
392
|
-
function reconcileItems(items, allowlist, candidatesBySku, digest, tracker,
|
|
480
|
+
function reconcileItems(items, allowlist, candidatesBySku, digest, tracker, ourReasons) {
|
|
393
481
|
const kept = [];
|
|
394
482
|
for (const item of items) {
|
|
395
483
|
const rejection = rejectionFor(item.sku, allowlist, tracker);
|
|
@@ -405,21 +493,23 @@ function reconcileItems(items, allowlist, candidatesBySku, digest, tracker, host
|
|
|
405
493
|
const hasSupportedBasis = verifyBasis(item.basis, product, digest);
|
|
406
494
|
if (!hasSupportedBasis)
|
|
407
495
|
tracker.record(`unsupported-basis:${item.basis}:${item.sku}`);
|
|
408
|
-
|
|
496
|
+
// Our sentence, not the model's. It has to match, so a lookalike is still screened.
|
|
497
|
+
const isOurs = item.reason !== null && ourReasons.get(item.sku) === item.reason;
|
|
498
|
+
const own = tracker.factsFor(item.sku);
|
|
409
499
|
kept.push({
|
|
410
500
|
sku: item.sku,
|
|
411
501
|
basis: hasSupportedBasis ? item.basis : 'popular',
|
|
412
502
|
// The prose exists to state the basis. If the basis did not hold, the
|
|
413
503
|
// prose is a claim we just decided is untrue.
|
|
414
504
|
reason: hasSupportedBasis
|
|
415
|
-
?
|
|
505
|
+
? isOurs
|
|
416
506
|
? clampNullable(item.reason, CLAMP.reason)
|
|
417
|
-
: screenClaim(clampNullable(item.reason, CLAMP.reason), `reason:${item.sku}`, tracker)
|
|
507
|
+
: screenClaim(clampNullable(item.reason, CLAMP.reason), `reason:${item.sku}`, tracker, own)
|
|
418
508
|
: null,
|
|
419
509
|
// A badge is the shortest, loudest text on the card, and the schema's own
|
|
420
510
|
// example for it was "Back in stock" — a stock claim. It renders, so it is
|
|
421
511
|
// read for claims like every other sentence the model writes.
|
|
422
|
-
badge: screenClaim(clampNullable(item.badge, CLAMP.badge), `badge:${item.sku}`, tracker),
|
|
512
|
+
badge: screenClaim(clampNullable(item.badge, CLAMP.badge), `badge:${item.sku}`, tracker, own),
|
|
423
513
|
emphasis: item.emphasis,
|
|
424
514
|
});
|
|
425
515
|
}
|
|
@@ -488,7 +578,7 @@ function chooseBundle(bundles, allowlist, digest, candidatesBySku, tracker) {
|
|
|
488
578
|
export function bundleForShopper(input, digest, spokenFor) {
|
|
489
579
|
const allowlist = buildAllowlist(input, digest);
|
|
490
580
|
const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
|
|
491
|
-
const tracker = createPlacementTracker(digest.maxItems);
|
|
581
|
+
const tracker = createPlacementTracker(digest.maxItems, hostFacts(input));
|
|
492
582
|
for (const sku of spokenFor)
|
|
493
583
|
tracker.place(sku);
|
|
494
584
|
return chooseBundle(input.bundles, allowlist, digest, candidatesBySku, tracker);
|
|
@@ -518,7 +608,7 @@ export function placeableHeroSkus(blocks, input, digest) {
|
|
|
518
608
|
}
|
|
519
609
|
return skus;
|
|
520
610
|
}
|
|
521
|
-
function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, tracker,
|
|
611
|
+
function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, tracker, ourReasons) {
|
|
522
612
|
switch (block.kind) {
|
|
523
613
|
case 'hero': {
|
|
524
614
|
let sku = block.sku;
|
|
@@ -550,7 +640,7 @@ function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, trac
|
|
|
550
640
|
};
|
|
551
641
|
}
|
|
552
642
|
case 'grid': {
|
|
553
|
-
const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker,
|
|
643
|
+
const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker, ourReasons);
|
|
554
644
|
if (items.length === 0) {
|
|
555
645
|
tracker.record('empty-block:grid');
|
|
556
646
|
return null;
|
|
@@ -564,7 +654,7 @@ function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, trac
|
|
|
564
654
|
};
|
|
565
655
|
}
|
|
566
656
|
case 'carousel': {
|
|
567
|
-
const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker,
|
|
657
|
+
const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker, ourReasons);
|
|
568
658
|
if (items.length === 0) {
|
|
569
659
|
tracker.record('empty-block:carousel');
|
|
570
660
|
return null;
|
|
@@ -629,20 +719,23 @@ function showsAnyProduct(blocks) {
|
|
|
629
719
|
}
|
|
630
720
|
export function reconcileSpec(generated, input, digest,
|
|
631
721
|
/**
|
|
632
|
-
*
|
|
633
|
-
*
|
|
722
|
+
* The reason this request wrote itself, by SKU: the host's own `reason` on a
|
|
723
|
+
* candidate, or the sentence the selector wrote when there was none. Neither is the
|
|
724
|
+
* model's words, and the deterministic component renders the same sentence unscreened.
|
|
725
|
+
*
|
|
726
|
+
* Only `fitToShopper` fills it, so in `per-shopper` mode it is empty and every
|
|
634
727
|
* reason is the model's, including one that happens to read the same.
|
|
635
728
|
*/
|
|
636
|
-
|
|
729
|
+
ourReasons = new Map()) {
|
|
637
730
|
const allowlist = buildAllowlist(input, digest);
|
|
638
731
|
const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
|
|
639
|
-
const tracker = createPlacementTracker(digest.maxItems);
|
|
732
|
+
const tracker = createPlacementTracker(digest.maxItems, hostFacts(input));
|
|
640
733
|
if (generated.blocks.length > MAX_BLOCKS) {
|
|
641
734
|
tracker.record(`too-many-blocks:${generated.blocks.length}`);
|
|
642
735
|
}
|
|
643
736
|
const blocks = [];
|
|
644
737
|
for (const block of generated.blocks.slice(0, MAX_BLOCKS)) {
|
|
645
|
-
const reconciled = reconcileBlock(block, allowlist, candidatesBySku, digest, input.bundles, tracker,
|
|
738
|
+
const reconciled = reconcileBlock(block, allowlist, candidatesBySku, digest, input.bundles, tracker, ourReasons);
|
|
646
739
|
if (reconciled !== null)
|
|
647
740
|
blocks.push(reconciled);
|
|
648
741
|
}
|
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rudra-js/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "The contracts and logic that turn one tracking payload into one renderable component specification",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"llm",
|
|
@@ -51,9 +51,11 @@
|
|
|
51
51
|
"access": "public"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
|
+
"@rudra-js/attested": "^0.5.0",
|
|
54
55
|
"zod": "^4.5.0"
|
|
55
56
|
},
|
|
56
57
|
"devDependencies": {
|
|
58
|
+
"@rudra-js/attested": "0.5.0",
|
|
57
59
|
"@types/node": "^26.4.1",
|
|
58
60
|
"zod": "^4.5.4"
|
|
59
61
|
}
|
|
@@ -251,7 +251,7 @@ function fitCohortSpec(
|
|
|
251
251
|
input: TrackingInput,
|
|
252
252
|
digest: SignalDigest,
|
|
253
253
|
rank: RankOrder,
|
|
254
|
-
|
|
254
|
+
ourReasons: Map<string, string>,
|
|
255
255
|
): GeneratedSpec {
|
|
256
256
|
const picks = selectProducts(input, digest, { rank });
|
|
257
257
|
// Blocks past the cap never render, so a set is not worth reserving for one.
|
|
@@ -266,26 +266,26 @@ function fitCohortSpec(
|
|
|
266
266
|
}
|
|
267
267
|
aboveBundle.push(block);
|
|
268
268
|
}
|
|
269
|
-
if (!hasBundleBlock) return fitToShopper(spec, picks, digest.maxItems,
|
|
269
|
+
if (!hasBundleBlock) return fitToShopper(spec, picks, digest.maxItems, ourReasons);
|
|
270
270
|
|
|
271
271
|
// Only the heroes above the bundle block are placed when it is reached, so
|
|
272
272
|
// they are all the choice may account for.
|
|
273
273
|
const chosen = bundleForShopper(input, digest, placeableHeroSkus(aboveBundle, input, digest));
|
|
274
|
-
if (!chosen) return fitToShopper(spec, picks, digest.maxItems,
|
|
274
|
+
if (!chosen) return fitToShopper(spec, picks, digest.maxItems, ourReasons);
|
|
275
275
|
|
|
276
276
|
const spokenFor = new Set<string>(chosen.skus);
|
|
277
277
|
for (const sku of placeableHeroSkus(blocks, input, digest)) spokenFor.add(sku);
|
|
278
278
|
|
|
279
279
|
const roomLeft = digest.maxItems - spokenFor.size;
|
|
280
280
|
// A set is worth showing, but not at the cost of an empty grid.
|
|
281
|
-
if (roomLeft <= 0) return fitToShopper(spec, picks, digest.maxItems,
|
|
281
|
+
if (roomLeft <= 0) return fitToShopper(spec, picks, digest.maxItems, ourReasons);
|
|
282
282
|
|
|
283
283
|
const forGrid: ProductPick[] = [];
|
|
284
284
|
for (const pick of picks) {
|
|
285
285
|
if (!spokenFor.has(pick.product.sku)) forGrid.push(pick);
|
|
286
286
|
}
|
|
287
287
|
|
|
288
|
-
return fitToShopper(spec, forGrid, roomLeft,
|
|
288
|
+
return fitToShopper(spec, forGrid, roomLeft, ourReasons);
|
|
289
289
|
}
|
|
290
290
|
|
|
291
291
|
/** Attaches the provenance the server owns. The model never supplies any of it. */
|
|
@@ -510,16 +510,17 @@ export function createComponentGenerator(
|
|
|
510
510
|
|
|
511
511
|
// One place where anything is served, whichever side of the cache it came
|
|
512
512
|
// from, and always against the facts of the shopper asking now.
|
|
513
|
-
// A cohort spec names products chosen for whoever asked first
|
|
514
|
-
//
|
|
515
|
-
// per-shopper mode this stays empty and
|
|
516
|
-
|
|
513
|
+
// A cohort spec names products chosen for whoever asked first, and every
|
|
514
|
+
// reason under one of them is written here rather than by the model. Only
|
|
515
|
+
// the cohort path does that, so in per-shopper mode this stays empty and
|
|
516
|
+
// every reason is screened.
|
|
517
|
+
const ourReasons = new Map<string, string>();
|
|
517
518
|
const served =
|
|
518
519
|
generation === 'cohort'
|
|
519
|
-
? fitCohortSpec(answer.spec, input, digest, rank,
|
|
520
|
+
? fitCohortSpec(answer.spec, input, digest, rank, ourReasons)
|
|
520
521
|
: answer.spec;
|
|
521
522
|
|
|
522
|
-
const reconciled = reconcileSpec(served, input, digest,
|
|
523
|
+
const reconciled = reconcileSpec(served, input, digest, ourReasons);
|
|
523
524
|
if (!reconciled.isUsable) {
|
|
524
525
|
return buildDeterministic(input, digest, startedAt, key, 'unusable-on-serve', {
|
|
525
526
|
calledModel,
|
package/src/fit-to-shopper.ts
CHANGED
|
@@ -7,7 +7,7 @@ export function fitToShopper(
|
|
|
7
7
|
spec: GeneratedSpec,
|
|
8
8
|
picks: readonly ProductPick[],
|
|
9
9
|
maxItems: number,
|
|
10
|
-
|
|
10
|
+
ourReasons?: Map<string, string>,
|
|
11
11
|
): GeneratedSpec {
|
|
12
12
|
// Picks are ordered best first. Every slot takes the next one.
|
|
13
13
|
let next = 0;
|
|
@@ -25,7 +25,9 @@ export function fitToShopper(
|
|
|
25
25
|
for (const item of block.items) {
|
|
26
26
|
if (next >= limit) break; // shrink, never pad
|
|
27
27
|
const chosen = picks[next]!;
|
|
28
|
-
|
|
28
|
+
// Every reason here is written by this library or handed to it by the
|
|
29
|
+
// shop. None of them is the model's, whatever the model wrote in this slot.
|
|
30
|
+
ourReasons?.set(chosen.product.sku, chosen.reason);
|
|
29
31
|
items.push({
|
|
30
32
|
sku: chosen.product.sku,
|
|
31
33
|
basis: chosen.basis,
|
package/src/model-prompt.ts
CHANGED
|
@@ -227,10 +227,23 @@ function describeCandidate(product: Product): string {
|
|
|
227
227
|
*/
|
|
228
228
|
const MAX_CANDIDATES = 60;
|
|
229
229
|
|
|
230
|
+
/**
|
|
231
|
+
* The candidates the model is actually shown.
|
|
232
|
+
*
|
|
233
|
+
* An out-of-stock product is dropped during reconciliation whatever the model
|
|
234
|
+
* does with it, so offering one only costs the shopper a slot.
|
|
235
|
+
*
|
|
236
|
+
* Exported because reconciliation checks the numerals the model writes against
|
|
237
|
+
* the strings on this list, and a candidate it was never shown cannot be where
|
|
238
|
+
* one came from. Two copies of "what the model saw" would drift, and the pair
|
|
239
|
+
* that drifted would be the prompt and the screen reading it back.
|
|
240
|
+
*/
|
|
241
|
+
export function offeredCandidates(input: TrackingInput): Product[] {
|
|
242
|
+
return input.candidates.filter((product) => product.isInStock).slice(0, MAX_CANDIDATES);
|
|
243
|
+
}
|
|
244
|
+
|
|
230
245
|
export function buildPrompt(input: TrackingInput, digest: SignalDigest): PromptPair {
|
|
231
|
-
|
|
232
|
-
// does with it, so offering one only costs the shopper a slot.
|
|
233
|
-
const offered = input.candidates.filter((product) => product.isInStock).slice(0, MAX_CANDIDATES);
|
|
246
|
+
const offered = offeredCandidates(input);
|
|
234
247
|
|
|
235
248
|
// The markers are OWASP's labelled-block recommendation. They are safe as
|
|
236
249
|
// boundaries because every value between them is quoted and stripped of
|
package/src/product-selection.ts
CHANGED
|
@@ -21,10 +21,8 @@ export interface ProductPick {
|
|
|
21
21
|
product: Product;
|
|
22
22
|
/** Why this product, stated so reconciliation can check it. */
|
|
23
23
|
basis: RecommendationBasis;
|
|
24
|
-
/** How the basis reads to a shopper. */
|
|
24
|
+
/** How the basis reads to a shopper. The host's own sentence when it wrote one. */
|
|
25
25
|
reason: string;
|
|
26
|
-
/** True when `reason` is the host's own sentence from the candidate. */
|
|
27
|
-
reasonFromHost: boolean;
|
|
28
26
|
/** Unnormalised. Only the ordering is meaningful. */
|
|
29
27
|
score: number;
|
|
30
28
|
}
|
|
@@ -164,7 +162,6 @@ export function selectProducts(
|
|
|
164
162
|
product,
|
|
165
163
|
basis,
|
|
166
164
|
reason: product.reason ?? reason,
|
|
167
|
-
reasonFromHost: product.reason !== undefined,
|
|
168
165
|
score,
|
|
169
166
|
});
|
|
170
167
|
}
|