@rudra-js/core 0.3.1 → 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 +202 -31
- 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 +227 -30
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.
|
|
@@ -224,12 +229,153 @@ const CLAIM_PATTERNS = [
|
|
|
224
229
|
],
|
|
225
230
|
},
|
|
226
231
|
];
|
|
232
|
+
/**
|
|
233
|
+
* Letters that render as a Latin letter but are not one. A Cyrillic о in
|
|
234
|
+
* "in stоck" would otherwise carry a stock claim straight past the rule written
|
|
235
|
+
* for it, and the shopper would read the claim anyway.
|
|
236
|
+
*/
|
|
237
|
+
const CONFUSABLES = {
|
|
238
|
+
а: 'a',
|
|
239
|
+
в: 'b',
|
|
240
|
+
е: 'e',
|
|
241
|
+
к: 'k',
|
|
242
|
+
м: 'm',
|
|
243
|
+
н: 'h',
|
|
244
|
+
о: 'o',
|
|
245
|
+
р: 'p',
|
|
246
|
+
с: 'c',
|
|
247
|
+
т: 't',
|
|
248
|
+
х: 'x',
|
|
249
|
+
у: 'y',
|
|
250
|
+
ѕ: 's',
|
|
251
|
+
і: 'i',
|
|
252
|
+
ј: 'j',
|
|
253
|
+
ԁ: 'd',
|
|
254
|
+
һ: 'h',
|
|
255
|
+
ӏ: 'l',
|
|
256
|
+
α: 'a',
|
|
257
|
+
ε: 'e',
|
|
258
|
+
ι: 'i',
|
|
259
|
+
κ: 'k',
|
|
260
|
+
ν: 'v',
|
|
261
|
+
ο: 'o',
|
|
262
|
+
ρ: 'p',
|
|
263
|
+
τ: 't',
|
|
264
|
+
υ: 'u',
|
|
265
|
+
χ: 'x',
|
|
266
|
+
ϲ: 'c',
|
|
267
|
+
};
|
|
268
|
+
/**
|
|
269
|
+
* Characters that render as nothing: format characters, default-ignorable code
|
|
270
|
+
* points and the controls. Cf and Default_Ignorable each hold characters the
|
|
271
|
+
* other does not.
|
|
272
|
+
*
|
|
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.
|
|
277
|
+
*/
|
|
278
|
+
const INVISIBLE = /[\p{Cf}\p{Default_Ignorable_Code_Point}\p{Cc}]/gu;
|
|
279
|
+
/**
|
|
280
|
+
* The controls that do take room. Deleting these would read `Only 2\n3 left` as 23.
|
|
281
|
+
*
|
|
282
|
+
* No test pins this line, and none can: clamping collapses every run of whitespace
|
|
283
|
+
* before a claim is screened, so nothing here ever sees one. It is kept so the class
|
|
284
|
+
* reads the same in both copies.
|
|
285
|
+
*/
|
|
286
|
+
const SPACING = /[\t\n\v\f\r\u0085]/;
|
|
287
|
+
/**
|
|
288
|
+
* Marks that hang on the character before them instead of taking a column of their
|
|
289
|
+
* own. Dropped after composition, so an accented e keeps its accent while an
|
|
290
|
+
* overline, which composes with nothing, cannot hide a word from its own rule.
|
|
291
|
+
*/
|
|
292
|
+
const MARKS = /[\p{Mn}\p{Me}]/gu;
|
|
293
|
+
/**
|
|
294
|
+
* One shape for the text before the patterns read it, so a word that renders as
|
|
295
|
+
* "in stock" is read as "in stock" however it was spelled.
|
|
296
|
+
*
|
|
297
|
+
* Only the reading is normalised. What renders is what the model wrote.
|
|
298
|
+
*/
|
|
299
|
+
function normaliseForClaims(text) {
|
|
300
|
+
const lowered = text
|
|
301
|
+
.replace(INVISIBLE, (char) => (SPACING.test(char) ? char : ''))
|
|
302
|
+
.normalize('NFKC')
|
|
303
|
+
.toLowerCase()
|
|
304
|
+
.normalize('NFC')
|
|
305
|
+
.replace(MARKS, '');
|
|
306
|
+
let folded = '';
|
|
307
|
+
for (const char of lowered)
|
|
308
|
+
folded += CONFUSABLES[char] ?? char;
|
|
309
|
+
return folded;
|
|
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
|
+
}
|
|
227
373
|
/** Names the first forbidden claim the text makes, or null when it makes none. */
|
|
228
374
|
function claimIn(text) {
|
|
229
|
-
const
|
|
375
|
+
const normalised = normaliseForClaims(text);
|
|
230
376
|
for (const claim of CLAIM_PATTERNS) {
|
|
231
377
|
for (const pattern of claim.patterns) {
|
|
232
|
-
if (pattern.test(
|
|
378
|
+
if (pattern.test(normalised))
|
|
233
379
|
return claim.kind;
|
|
234
380
|
}
|
|
235
381
|
}
|
|
@@ -243,12 +389,14 @@ function claimIn(text) {
|
|
|
243
389
|
* through every function. The budget and the de-duplication set are global to a
|
|
244
390
|
* spec, not to a block, which is the part that is easy to get wrong.
|
|
245
391
|
*/
|
|
246
|
-
function createPlacementTracker(maxItems) {
|
|
392
|
+
function createPlacementTracker(maxItems, facts) {
|
|
247
393
|
const placedSkus = new Set();
|
|
248
394
|
const violations = [];
|
|
249
395
|
let remaining = maxItems;
|
|
250
396
|
return {
|
|
251
397
|
violations,
|
|
398
|
+
facts: facts.pooled,
|
|
399
|
+
factsFor: (sku) => facts.bySku.get(sku) ?? NO_FACTS,
|
|
252
400
|
get remaining() {
|
|
253
401
|
return remaining;
|
|
254
402
|
},
|
|
@@ -268,15 +416,33 @@ function createPlacementTracker(maxItems) {
|
|
|
268
416
|
* Runs after clamping, so what is screened is exactly what would have rendered.
|
|
269
417
|
* Dropping means what it means everywhere else here: this field becomes null
|
|
270
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.
|
|
271
424
|
*/
|
|
272
|
-
function screenClaim(value, field, tracker) {
|
|
425
|
+
function screenClaim(value, field, tracker, facts = tracker.facts) {
|
|
273
426
|
if (value === null)
|
|
274
427
|
return null;
|
|
275
428
|
const kind = claimIn(value);
|
|
276
|
-
if (kind
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
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;
|
|
280
446
|
}
|
|
281
447
|
/**
|
|
282
448
|
* The same screen for a field that cannot be null. Emptying it hands the field
|
|
@@ -311,7 +477,7 @@ function rejectionFor(sku, allowlist, tracker) {
|
|
|
311
477
|
return `budget:dropped:${named}`;
|
|
312
478
|
return null;
|
|
313
479
|
}
|
|
314
|
-
function reconcileItems(items, allowlist, candidatesBySku, digest, tracker,
|
|
480
|
+
function reconcileItems(items, allowlist, candidatesBySku, digest, tracker, ourReasons) {
|
|
315
481
|
const kept = [];
|
|
316
482
|
for (const item of items) {
|
|
317
483
|
const rejection = rejectionFor(item.sku, allowlist, tracker);
|
|
@@ -327,21 +493,23 @@ function reconcileItems(items, allowlist, candidatesBySku, digest, tracker, host
|
|
|
327
493
|
const hasSupportedBasis = verifyBasis(item.basis, product, digest);
|
|
328
494
|
if (!hasSupportedBasis)
|
|
329
495
|
tracker.record(`unsupported-basis:${item.basis}:${item.sku}`);
|
|
330
|
-
|
|
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);
|
|
331
499
|
kept.push({
|
|
332
500
|
sku: item.sku,
|
|
333
501
|
basis: hasSupportedBasis ? item.basis : 'popular',
|
|
334
502
|
// The prose exists to state the basis. If the basis did not hold, the
|
|
335
503
|
// prose is a claim we just decided is untrue.
|
|
336
504
|
reason: hasSupportedBasis
|
|
337
|
-
?
|
|
505
|
+
? isOurs
|
|
338
506
|
? clampNullable(item.reason, CLAMP.reason)
|
|
339
|
-
: screenClaim(clampNullable(item.reason, CLAMP.reason), `reason:${item.sku}`, tracker)
|
|
507
|
+
: screenClaim(clampNullable(item.reason, CLAMP.reason), `reason:${item.sku}`, tracker, own)
|
|
340
508
|
: null,
|
|
341
509
|
// A badge is the shortest, loudest text on the card, and the schema's own
|
|
342
510
|
// example for it was "Back in stock" — a stock claim. It renders, so it is
|
|
343
511
|
// read for claims like every other sentence the model writes.
|
|
344
|
-
badge: screenClaim(clampNullable(item.badge, CLAMP.badge), `badge:${item.sku}`, tracker),
|
|
512
|
+
badge: screenClaim(clampNullable(item.badge, CLAMP.badge), `badge:${item.sku}`, tracker, own),
|
|
345
513
|
emphasis: item.emphasis,
|
|
346
514
|
});
|
|
347
515
|
}
|
|
@@ -410,7 +578,7 @@ function chooseBundle(bundles, allowlist, digest, candidatesBySku, tracker) {
|
|
|
410
578
|
export function bundleForShopper(input, digest, spokenFor) {
|
|
411
579
|
const allowlist = buildAllowlist(input, digest);
|
|
412
580
|
const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
|
|
413
|
-
const tracker = createPlacementTracker(digest.maxItems);
|
|
581
|
+
const tracker = createPlacementTracker(digest.maxItems, hostFacts(input));
|
|
414
582
|
for (const sku of spokenFor)
|
|
415
583
|
tracker.place(sku);
|
|
416
584
|
return chooseBundle(input.bundles, allowlist, digest, candidatesBySku, tracker);
|
|
@@ -440,7 +608,7 @@ export function placeableHeroSkus(blocks, input, digest) {
|
|
|
440
608
|
}
|
|
441
609
|
return skus;
|
|
442
610
|
}
|
|
443
|
-
function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, tracker,
|
|
611
|
+
function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, tracker, ourReasons) {
|
|
444
612
|
switch (block.kind) {
|
|
445
613
|
case 'hero': {
|
|
446
614
|
let sku = block.sku;
|
|
@@ -472,7 +640,7 @@ function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, trac
|
|
|
472
640
|
};
|
|
473
641
|
}
|
|
474
642
|
case 'grid': {
|
|
475
|
-
const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker,
|
|
643
|
+
const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker, ourReasons);
|
|
476
644
|
if (items.length === 0) {
|
|
477
645
|
tracker.record('empty-block:grid');
|
|
478
646
|
return null;
|
|
@@ -486,7 +654,7 @@ function reconcileBlock(block, allowlist, candidatesBySku, digest, bundles, trac
|
|
|
486
654
|
};
|
|
487
655
|
}
|
|
488
656
|
case 'carousel': {
|
|
489
|
-
const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker,
|
|
657
|
+
const items = reconcileItems(block.items, allowlist, candidatesBySku, digest, tracker, ourReasons);
|
|
490
658
|
if (items.length === 0) {
|
|
491
659
|
tracker.record('empty-block:carousel');
|
|
492
660
|
return null;
|
|
@@ -551,20 +719,23 @@ function showsAnyProduct(blocks) {
|
|
|
551
719
|
}
|
|
552
720
|
export function reconcileSpec(generated, input, digest,
|
|
553
721
|
/**
|
|
554
|
-
*
|
|
555
|
-
*
|
|
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
|
|
556
727
|
* reason is the model's, including one that happens to read the same.
|
|
557
728
|
*/
|
|
558
|
-
|
|
729
|
+
ourReasons = new Map()) {
|
|
559
730
|
const allowlist = buildAllowlist(input, digest);
|
|
560
731
|
const candidatesBySku = new Map(input.candidates.map((product) => [product.sku, product]));
|
|
561
|
-
const tracker = createPlacementTracker(digest.maxItems);
|
|
732
|
+
const tracker = createPlacementTracker(digest.maxItems, hostFacts(input));
|
|
562
733
|
if (generated.blocks.length > MAX_BLOCKS) {
|
|
563
734
|
tracker.record(`too-many-blocks:${generated.blocks.length}`);
|
|
564
735
|
}
|
|
565
736
|
const blocks = [];
|
|
566
737
|
for (const block of generated.blocks.slice(0, MAX_BLOCKS)) {
|
|
567
|
-
const reconciled = reconcileBlock(block, allowlist, candidatesBySku, digest, input.bundles, tracker,
|
|
738
|
+
const reconciled = reconcileBlock(block, allowlist, candidatesBySku, digest, input.bundles, tracker, ourReasons);
|
|
568
739
|
if (reconciled !== null)
|
|
569
740
|
blocks.push(reconciled);
|
|
570
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
|
}
|