@curless/hotel-storefront 0.51.6 → 0.52.1

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 (46) hide show
  1. package/dist/aggregate/hotels.d.ts +18 -1
  2. package/dist/aggregate/hotels.d.ts.map +1 -1
  3. package/dist/aggregate/hotels.js +38 -7
  4. package/dist/aggregate/hotels.js.map +1 -1
  5. package/dist/aggregate/make.d.ts.map +1 -1
  6. package/dist/aggregate/make.js +2 -0
  7. package/dist/aggregate/make.js.map +1 -1
  8. package/dist/backend.d.ts +26 -0
  9. package/dist/backend.d.ts.map +1 -1
  10. package/dist/backend.js.map +1 -1
  11. package/dist/card.generated.d.ts +1 -1
  12. package/dist/card.generated.js +2 -2
  13. package/dist/card.generated.js.map +1 -1
  14. package/dist/config.d.ts +27 -1
  15. package/dist/config.d.ts.map +1 -1
  16. package/dist/config.js +43 -0
  17. package/dist/config.js.map +1 -1
  18. package/dist/demo-hotels.d.ts.map +1 -1
  19. package/dist/demo-hotels.js +28 -1
  20. package/dist/demo-hotels.js.map +1 -1
  21. package/dist/money.d.ts +1 -0
  22. package/dist/money.d.ts.map +1 -1
  23. package/dist/money.js +1 -1
  24. package/dist/money.js.map +1 -1
  25. package/dist/reference.d.ts +34 -0
  26. package/dist/reference.d.ts.map +1 -0
  27. package/dist/reference.js +117 -0
  28. package/dist/reference.js.map +1 -0
  29. package/dist/server.d.ts +2 -2
  30. package/dist/server.js +2 -2
  31. package/dist/supplier.d.ts.map +1 -1
  32. package/dist/supplier.js +2 -1
  33. package/dist/supplier.js.map +1 -1
  34. package/dist/surface.d.ts.map +1 -1
  35. package/dist/surface.js +7 -0
  36. package/dist/surface.js.map +1 -1
  37. package/dist/tools.d.ts.map +1 -1
  38. package/dist/tools.js +86 -4
  39. package/dist/tools.js.map +1 -1
  40. package/dist/types.d.ts +15 -0
  41. package/dist/types.d.ts.map +1 -1
  42. package/dist/vocab.d.ts +1 -1
  43. package/dist/vocab.d.ts.map +1 -1
  44. package/dist/vocab.js +18 -3
  45. package/dist/vocab.js.map +1 -1
  46. package/package.json +1 -1
@@ -0,0 +1,117 @@
1
+ import { decimalsOf, moneyWords } from './money.js';
2
+ // "≈ US$179" beside a price in another currency (0.52.0). A hotel is quoted
3
+ // and charged in ITS OWN currency, always (robin, 2026-10-21); this only says,
4
+ // small and beside it, what that comes to in a currency the guest may think in.
5
+ //
6
+ // ⚠️ A REFERENCE, NEVER A PRICE. Nothing here sorts, filters, adds up or is
7
+ // sent to a booking: the figure is made from an amount that was already
8
+ // written, rounded to WHOLE units of the reference currency (it is an
9
+ // approximation, and a cent on it would claim otherwise), and drawn by the card
10
+ // beside the amount it is of. The card does no arithmetic of its own - the
11
+ // figure is ours, like every other amount.
12
+ /** The most "≈" figures the text lists: a list of fifty hotels is not fifty of them. */
13
+ export const APPROX_IN_TEXT_MAX = 12;
14
+ /**
15
+ * An amount in the reference currency - whole units - or nothing: the amount is
16
+ * already in it, the currency has no rate, or the figure would round to zero
17
+ * ("≈ US$0" beside a ¥3 fee says nothing, and a zero beside a price reads as
18
+ * free).
19
+ */
20
+ export const refOf = (reference, amount) => {
21
+ const to = reference.currency.toUpperCase();
22
+ const from = amount.currency.toUpperCase();
23
+ if (from === to)
24
+ return undefined;
25
+ const rate = reference.rates[from];
26
+ if (typeof rate !== 'number' || !Number.isFinite(rate) || rate <= 0)
27
+ return undefined;
28
+ const whole = Math.round((amount.minor / 10 ** amount.dp) * rate);
29
+ if (whole === 0)
30
+ return undefined;
31
+ const dp = decimalsOf(to);
32
+ return { minor: whole * 10 ** dp, currency: to, dp };
33
+ };
34
+ /** The reference currency as a guest reads it: "US$" - a bare "$" is also the Hong Kong and Singapore dollar. */
35
+ export const currencyLabel = (code) => code.toUpperCase() === 'USD' ? 'US$' : code;
36
+ /** "US$179" - the amount as the text writes it, with the dollar made unmistakable. */
37
+ const refWords = (ref) => {
38
+ const said = moneyWords({ minor: ref.minor, currency: ref.currency });
39
+ return /^-?\$/.test(said) ? said.replace('$', 'US$') : said;
40
+ };
41
+ /** "≈ US$179". */
42
+ export const approxWords = (ref) => `≈ ${refWords(ref)}`;
43
+ /** "a demonstration rate of 2026-11-01" / "the rate of 2026-11-01" / "an indicative rate". */
44
+ const rateWords = (reference) => reference.demo
45
+ ? `a demonstration rate${reference.asOf ? ` of ${reference.asOf}` : ''}`
46
+ : reference.asOf
47
+ ? `the rate of ${reference.asOf}`
48
+ : 'an indicative rate';
49
+ /** What the "≈" figures in an answer are, for the model - in `structuredContent.reference.words`. */
50
+ export const referenceWords = (reference) => `≈ figures are in ${currencyLabel(reference.currency)} at ${rateWords(reference)}, for reference only - what is charged is each hotel's own currency.`;
51
+ /** Where `words` stands in `text` as a whole amount, else -1: not inside a longer number, nor after another symbol ("$400" in "HK$400"). */
52
+ const indexIn = (text, words) => {
53
+ for (let at = text.indexOf(words); at >= 0; at = text.indexOf(words, at + 1)) {
54
+ const before = text[at - 1] ?? '';
55
+ const after = text.slice(at + words.length, at + words.length + 2);
56
+ if (/[\p{L}\p{N}]/u.test(before))
57
+ continue;
58
+ // "650 MYR" in "1,650 MYR".
59
+ if (/[.,]/.test(before) && /\d/.test(text[at - 2] ?? ''))
60
+ continue;
61
+ if (/^\d|^[.,]\d/.test(after))
62
+ continue;
63
+ return at;
64
+ }
65
+ return -1;
66
+ };
67
+ /**
68
+ * An answer with its "≈" figures: each amount the card is handed gets the
69
+ * `ref` it is drawn with, the model is told what they are
70
+ * (`structuredContent.approx` and `.reference`), and the text ends with one
71
+ * sentence listing the figures of the amounts the text itself writes.
72
+ *
73
+ * Nothing at all - the answer as it came - when there is no reference or no
74
+ * amount in another currency.
75
+ */
76
+ export const withReference = (reference, answer, amounts, written) => {
77
+ // The card's: every amount in the payload, with its figure where it has one.
78
+ const drawn = {};
79
+ const approx = {};
80
+ for (const [words, amount] of Object.entries(amounts)) {
81
+ const ref = refOf(reference, amount);
82
+ drawn[words] = ref ? { ...amount, ref } : amount;
83
+ if (ref)
84
+ approx[words] = approxWords(ref);
85
+ }
86
+ // The model's: the amounts the text writes, in the order it writes them.
87
+ const inText = [];
88
+ for (const [words, amount] of written) {
89
+ const ref = amount ? refOf(reference, amount) : undefined;
90
+ const at = ref ? indexIn(answer.text, words) : -1;
91
+ if (ref && at >= 0)
92
+ inText.push({ at, words, ref });
93
+ }
94
+ inText.sort((a, b) => a.at - b.at);
95
+ const listed = inText.slice(0, APPROX_IN_TEXT_MAX).map((x) => `${x.words} ${approxWords(x.ref)}`);
96
+ const hasAny = Object.keys(approx).length > 0 || listed.length > 0;
97
+ const structured = {
98
+ ...answer.structured,
99
+ ...(Object.keys(drawn).length ? { amounts: drawn } : {}),
100
+ ...(Object.keys(approx).length ? { approx } : {}),
101
+ ...(hasAny
102
+ ? {
103
+ reference: {
104
+ currency: reference.currency.toUpperCase(),
105
+ ...(reference.asOf ? { asOf: reference.asOf } : {}),
106
+ ...(reference.demo ? { demo: true } : {}),
107
+ words: referenceWords(reference),
108
+ },
109
+ }
110
+ : {}),
111
+ };
112
+ const sentence = listed.length
113
+ ? `For reference only, at ${rateWords(reference)} (what is charged is the hotel's own currency): ${listed.join('; ')}.`
114
+ : '';
115
+ return { structured, text: sentence ? `${answer.text}\n\n${sentence}` : answer.text };
116
+ };
117
+ //# sourceMappingURL=reference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference.js","sourceRoot":"","sources":["../src/reference.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -28,7 +28,7 @@ export declare const INITIALIZE_PER_MINUTE = 300;
28
28
  * number. Found by reading the boot banner of a container that had just been
29
29
  * deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
30
30
  */
31
- export declare const VERSION = "0.51.6";
31
+ export declare const VERSION = "0.52.1";
32
32
  /**
33
33
  * The card's resource URI.
34
34
  *
@@ -37,7 +37,7 @@ export declare const VERSION = "0.51.6";
37
37
  * connector went storefront-v35 → v40 in a single day of UI work for exactly
38
38
  * this reason.
39
39
  */
40
- export declare const CARD_URI = "ui://curless/hotel/booking-v107.html";
40
+ export declare const CARD_URI = "ui://curless/hotel/booking-v108.html";
41
41
  /**
42
42
  * The URI one deployment names its card by: `CARD_URI` with a short hash of
43
43
  * everything a host caches under it - the card itself, and the hosts it may
package/dist/server.js CHANGED
@@ -48,7 +48,7 @@ export const INITIALIZE_PER_MINUTE = 300;
48
48
  * number. Found by reading the boot banner of a container that had just been
49
49
  * deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
50
50
  */
51
- export const VERSION = '0.51.6';
51
+ export const VERSION = '0.52.1';
52
52
  /**
53
53
  * The card's resource URI.
54
54
  *
@@ -57,7 +57,7 @@ export const VERSION = '0.51.6';
57
57
  * connector went storefront-v35 → v40 in a single day of UI work for exactly
58
58
  * this reason.
59
59
  */
60
- export const CARD_URI = 'ui://curless/hotel/booking-v107.html';
60
+ export const CARD_URI = 'ui://curless/hotel/booking-v108.html';
61
61
  /** The card as it ships, hashed once - what a host caches under the URI. */
62
62
  const CARD_HTML_SHA = createHash('sha256').update(HOTEL_CARD_HTML).digest('hex');
63
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"supplier.d.ts","sourceRoot":"","sources":["../src/supplier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAa3C,8FAA8F;AAC9F,MAAM,MAAM,IAAI,GAAG;IACjB,OAAO,EAAE,YAAY,CAAC;IACtB,qDAAqD;IACrD,YAAY,EAAE,MAAM,MAAM,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,iGAAiG;IACjG,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;CACvD,CAAC;AAEF,oGAAoG;AACpG,MAAM,MAAM,eAAe,GAAG;IAC5B,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,sGAAsG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC;IAC5B,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,sFAAsF;IACtF,UAAU,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,KAAK,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,eAAe,KAAG,IAW9E,CAAC;AAuBF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAA;CAAE,EAAE,KACjF,MAAM,EAOR,CAAC"}
1
+ {"version":3,"file":"supplier.d.ts","sourceRoot":"","sources":["../src/supplier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAa3C,8FAA8F;AAC9F,MAAM,MAAM,IAAI,GAAG;IACjB,OAAO,EAAE,YAAY,CAAC;IACtB,qDAAqD;IACrD,YAAY,EAAE,MAAM,MAAM,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,iGAAiG;IACjG,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;CACvD,CAAC;AAEF,oGAAoG;AACpG,MAAM,MAAM,eAAe,GAAG;IAC5B,sFAAsF;IACtF,KAAK,EAAE,MAAM,CAAC;IACd,sGAAsG;IACtG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC;IAC5B,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,sFAAsF;IACtF,UAAU,EAAE,OAAO,CAAC;IACpB,0EAA0E;IAC1E,KAAK,EAAE,QAAQ,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,eAAe,KAAG,IAW9E,CAAC;AAwBF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAA;CAAE,EAAE,KACjF,MAAM,EAOR,CAAC"}
package/dist/supplier.js CHANGED
@@ -28,7 +28,8 @@ const makeDemo = (data, ctx) => {
28
28
  });
29
29
  const domains = imageDomainsOf(hotels.hotels);
30
30
  return {
31
- backend,
31
+ // Reference rates (`data.reference`): the tools quote "≈" beside a price in another currency.
32
+ backend: data.reference ? { ...backend, reference: data.reference } : backend,
32
33
  imageDomains: () => domains,
33
34
  hotelCount: () => hotels.hotels.length,
34
35
  health: () => ({}),
@@ -1 +1 @@
1
- {"version":3,"file":"supplier.js","sourceRoot":"","sources":["../src/supplier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"supplier.js","sourceRoot":"","sources":["../src/supplier.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAqB,MAAM,cAAc,CAAC;AAG3E,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,YAAY,CAAC;AA8BlE,eAAO,MAAM,iBAAiB,GAC5B,OAAO,aAAa,EACpB,OAAM,mBAAuC;AAC7C;;;;;;;;;;;;;GAaG;AACH,OAAM;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,KAChD,MA6RF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EACzE,OAAO,SAAS,CAAC,EAAE,EACnB,eAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,SAAS,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,YAAW,WAAW,CAAC,MAAM,CAAa;;;;;;;;;;;;;;;;;KAwBxC,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;CAIb,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,aAAa,GAAI,OAAO,aAAa,KAAG,WAAW,CAAC,MAAM,CAsBnE,CAAC"}
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAqB,MAAM,cAAc,CAAC;AAI3E,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,YAAY,CAAC;AA8BlE,eAAO,MAAM,iBAAiB,GAC5B,OAAO,aAAa,EACpB,OAAM,mBAAuC;AAC7C;;;;;;;;;;;;;GAaG;AACH,OAAM;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,KAChD,MAmSF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EACzE,OAAO,SAAS,CAAC,EAAE,EACnB,eAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,SAAS,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,YAAW,WAAW,CAAC,MAAM,CAAa;;;;;;;;;;;;;;;;;KAwBxC,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;CAIb,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,aAAa,GAAI,OAAO,aAAa,KAAG,WAAW,CAAC,MAAM,CAsBnE,CAAC"}
package/dist/surface.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { FULL_CAPABILITIES } from './backend.js';
2
2
  import { FENCE_RULE } from './fence.js';
3
+ import { currencyLabel } from './reference.js';
3
4
  import { HOME_LIST_MAX } from './tools.js';
4
5
  import { noteFor, upFirst } from './vocab.js';
5
6
  // What a host is told about this connector: the `instructions` it injects into
@@ -295,6 +296,12 @@ opts = {}) => {
295
296
  caps.oneCurrency
296
297
  ? ''
297
298
  : `A trip can hold ${v.nounPlural} that charge in different currencies. It is then priced one currency at a time: each has its own taxes and total, and nothing converts one into another - so never add them together, never convert one, and never call one ${v.noun} cheaper than another across currencies.`,
299
+ // ⚠️ A REFERENCE, NEVER THE PRICE (robin, 2026-10-21): only where the
300
+ // deployment quotes "≈" figures (`data.reference`), in a card host and in
301
+ // one that draws none alike.
302
+ brand.config.data.reference
303
+ ? `Prices are in each ${v.noun}'s own currency, and that is what is charged. Where an answer gives ≈ ${currencyLabel(brand.config.data.reference.currency)} figures, they are a reference at the stated rate: quote the ${v.noun}'s own price first, and add the ≈ figure only for a guest who does not use that currency - never as the price.`
304
+ : '',
298
305
  caps.policies === false
299
306
  ? `A ${v.noun}'s cancellation terms are its RATE's: they come with each room for the nights asked about, and in full in the cancellation preview. ${v.market ? 'The groups here publish' : `${v.brand} publishes`} no other policy text here - asked about check-in times, children, pets, deposits or accessibility, say that it is not published here and do not fill in what hotels usually do.`
300
307
  : `Questions about cancellation terms, check-in and check-out, children, pets, deposits or accessibility: call ${t.policies} with that topic and answer from what the ${v.noun} has published. If it does not say, tell the guest that and give the ${v.noun}'s link; do not fill in what hotels usually do.`,
@@ -1 +1 @@
1
- {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,mBAAmB,EASzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAa,YAAY,EAAgB,MAAM,cAAc,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAkChD,OAAO,EAGL,KAAK,SAAS,EAMf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAEV,cAAc,EAoBd,eAAe,EAKhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAa,KAAK,UAAU,EAAwC,MAAM,YAAY,CAAC;AAuF9F,+GAA+G;AAC/G,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B;;;;GAIG;AACH,eAAO,MAAM,UAAU,GACrB,GAAG,SAAS,EACZ,GAAG,UAAU,EACb,OAAM,mBAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IACC,CAAC;AAEjD,mEAAmE;AACnE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EAChG,GAAG,CAAC,EACJ,OAAO;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE,EAC9C,OAAO,MAAM,KACZ,CA6BF,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,GAAG,SAAS,EAAE,MAAM,mBAAmB,KAAG,GAAG,CAAC,MAAM,CAO9E,CAAC;AAsiCL;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,mBAAmB,EACzB,OAAO,IAAI,EACX,OAAM;IACJ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,KACL,MAAM,CAAC,MAAM,EAAE,OAAO,CAgDxB,CAAC;AAyGF,eAAO,MAAM,kBAAkB,GAAI,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA4QtE,CAAC;AAEH,qDAAqD;AACrD,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/B;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9F,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4FAA4F;IAC5F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5D,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AA8NF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;IACjC,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAChC,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AA+jBF,4EAA4E;AAC5E,eAAO,MAAM,WAAW,mDAAmD,CAAC;AAwO5E;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,KAAG,MACqR,CAAC;AAo6BvU;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAEjC;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,IAAI,CAAC;AAyK/B;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,QAAQ,KAAG,UAOzC,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,MAAM,QAAQ,EACd,MAAM,MAAM,EACZ,SAAS,OAAO,EAChB,KAAK,WAAW,KACf,OAAO,CAAC,UAAU,CA+BpB,CAAC;AAsBF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,oPACuN,CAAC;AAEpP;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,2aAC+Y,CAAC;AAE3a,sFAAsF;AACtF,eAAO,MAAM,oBAAoB,kOACgM,CAAC;AAElO;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,qKACyI,CAAC"}
package/dist/tools.js CHANGED
@@ -7,6 +7,7 @@ import { amountsIn, formatMoney, keepingAmounts, money, multiplyMoney, toMinor }
7
7
  import { namedExactly, roomNamesOf, roomTypeNamed, withTraditional } from './names.js';
8
8
  import { overlapsOf } from './overlap.js';
9
9
  import { MAX_COMPARED, MAX_CONS, MAX_DAYS, MAX_ITEMS_PER_DAY, MAX_MOMENTS, MAX_PROS, buildItinerary, candidatesFor, compareHotels, namesMoreThanOne, } from './present.js';
10
+ import { withReference } from './reference.js';
10
11
  import { regionOf } from './regions.js';
11
12
  import { activeKeysOf, byRoomType, facetsOf, keyWords, matchesTerms, optionsOf, roomTermsOf, termWords, } from './room-filters.js';
12
13
  import { SAME_BOOKING_MS } from './same-booking.js';
@@ -1337,6 +1338,10 @@ export const buildOutputSchemas = (n) => ({
1337
1338
  stayDefault: STR,
1338
1339
  /** Only where the client shows no cards: nothing was drawn - see `LIST_NOT_DRAWN`. */
1339
1340
  notDrawn: STR,
1341
+ /** In a market: the groups that did not answer in time - none of their hotels is in this answer (`degradedOf`). */
1342
+ degraded: ARR,
1343
+ /** What `degraded` means, as the text says it: not that those groups have none here. */
1344
+ degradedSaid: STR,
1340
1345
  ...HOTEL_PAGE,
1341
1346
  },
1342
1347
  required: ['view'],
@@ -1535,6 +1540,9 @@ export const buildOutputSchemas = (n) => ({
1535
1540
  dropped: STRS,
1536
1541
  /** For a name that fits more than one hotel, the ones it fits - each with \`for\`, the name. */
1537
1542
  candidates: ARR,
1543
+ /** A \`city\` read in a market: the groups that did not answer in time (\`degradedOf\`). */
1544
+ degraded: ARR,
1545
+ degradedSaid: STR,
1538
1546
  },
1539
1547
  required: ['view'],
1540
1548
  },
@@ -2833,6 +2841,30 @@ const remember = (deps, k, amount) => {
2833
2841
  };
2834
2842
  /** "a, b and c" - "a and b" - "a". */
2835
2843
  const listAnd = (xs) => xs.length > 1 ? `${xs.slice(0, -1).join(', ')} and ${xs.at(-1)}` : (xs[0] ?? '');
2844
+ /**
2845
+ * The groups of a market that did not answer a search, as the sentence the
2846
+ * model is told and the fields the card draws its own line from - the same
2847
+ * list in both (`HotelSearchResult.degraded`).
2848
+ *
2849
+ * ⚠️ "DID NOT ANSWER" IS NOT "HAS NONE". A list without Atour's hotels, from
2850
+ * an Atour that timed out, reads to a guest as a city where Atour has no
2851
+ * hotel. The sentence says the first and denies the second, in the text and in
2852
+ * `structuredContent` alike - a host with no card has only the words.
2853
+ */
2854
+ const degradedOf = (deps, answer) => {
2855
+ const down = answer.degraded ?? [];
2856
+ if (down.length === 0)
2857
+ return { structured: {}, said: '' };
2858
+ const one = down.length === 1;
2859
+ const said = `${listAnd(down.map((d) => d.name))} did not answer in time, so none of ${one ? 'its' : 'their'} ${deps.vocab.nounPlural} is in this list - this does not mean ${one ? 'it has' : 'they have'} none here; asking again in a moment may bring them.`;
2860
+ return {
2861
+ structured: {
2862
+ degraded: down.map((d) => ({ supplier: d.supplier, name: d.name })),
2863
+ degradedSaid: said,
2864
+ },
2865
+ said,
2866
+ };
2867
+ };
2836
2868
  /** The counts a call can carry, and what each may be. */
2837
2869
  const COUNTS = ['guests', 'rooms', 'quantity'];
2838
2870
  /** "2" is 2: a host that sends a count as a string has not asked for something else. */
@@ -3002,6 +3034,25 @@ const needsRoomIn = (t, lines, parts) => {
3002
3034
  .join('\n'),
3003
3035
  };
3004
3036
  };
3037
+ /**
3038
+ * What a booking of these stays takes of the guest, in the words of the
3039
+ * sentence that asks for it: "name and email", and a phone number where a group
3040
+ * needs one - for all of them, or, in a market where only some of the trip's
3041
+ * groups do, for the stays with those.
3042
+ */
3043
+ const guestDetailsFor = (deps, rooms) => {
3044
+ if (!deps.backend.suppliers)
3045
+ return (deps.backend.capabilities ?? FULL_CAPABILITIES).requiresPhone
3046
+ ? 'name, email and phone number'
3047
+ : 'name and email';
3048
+ const groups = [...new Set(rooms.map((l) => deps.backend.supplierOf?.(l.hotelId)))];
3049
+ const needing = groups.filter((id) => !!holderOf(deps, id).caps.requiresPhone);
3050
+ if (needing.length === 0)
3051
+ return 'name and email';
3052
+ if (needing.length === groups.length)
3053
+ return 'name, email and phone number';
3054
+ return `name and email, and a phone number for the stays with ${listAnd(needing.map((id) => holderOf(deps, id).name))}`;
3055
+ };
3005
3056
  /**
3006
3057
  * The lines in one slot of the trip store, priced - the trip itself, or (with
3007
3058
  * `store`) the picked room's slot. `key` stays the conversation's trip key: it
@@ -3040,8 +3091,14 @@ const currentTrip = async (deps, key, who, store = key, coupon, ctx) => {
3040
3091
  const overlapping = overlaps.length ? { overlaps } : {};
3041
3092
  // ⚠️ WHAT COMES NEXT, IN WORDS (2026-11-02 audit, P2-4): the card has a
3042
3093
  // Book button under the trip, and the words had nothing in its place.
3094
+ //
3095
+ // ⚠️ AND A PHONE NUMBER WHERE THE TRIP'S GROUP NEEDS ONE (the 0.52.0 gap): the
3096
+ // card's form asks for it, and this sentence - the whole of the card for a
3097
+ // client that draws none - said only "name and email", so the first booking
3098
+ // came back "needs a phone number". Whose need it is is the trip's groups',
3099
+ // as `requestBooking` judges it.
3043
3100
  const nextStep = ctx?.noCards && parts.some((p) => p.lines.some((l) => l.kind === 'room'))
3044
- ? `Nothing in the trip is booked yet. To book it, ${deps.tools.requestBooking} takes the guest's own name and email - ask for them if the guest has not typed them in this conversation.`
3101
+ ? `Nothing in the trip is booked yet. To book it, ${deps.tools.requestBooking} takes the guest's own ${guestDetailsFor(deps, lines.filter((l) => l.kind === 'room'))} - ask for them if the guest has not typed them in this conversation.`
3045
3102
  : '';
3046
3103
  if (parts.length === 1 && only) {
3047
3104
  return {
@@ -3389,6 +3446,14 @@ export const handleTool = async (deps, name, rawArgs, ctx) => {
3389
3446
  // a card from before - its minor units and currency, for the card to write
3390
3447
  // in its reader's language. The card does no sums: every figure is ours.
3391
3448
  const amounts = amountsIn(named, written);
3449
+ // ⚠️ AND, WHERE THE DEPLOYMENT HAS REFERENCE RATES, A SMALL "≈" BESIDE EACH
3450
+ // AMOUNT IN ANOTHER CURRENCY (reference.ts): the hotel's own currency is what
3451
+ // is quoted and charged, and the figure is only ever beside it.
3452
+ if (deps.backend.reference)
3453
+ return {
3454
+ ...answer,
3455
+ ...withReference(deps.backend.reference, { structured: named, text: answer.text }, amounts, written),
3456
+ };
3392
3457
  const structured = Object.keys(amounts).length ? { ...named, amounts } : named;
3393
3458
  return { ...answer, structured };
3394
3459
  };
@@ -4672,6 +4737,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
4672
4737
  : `${c.name} (${c.count})`)
4673
4738
  .join(', ');
4674
4739
  const n = deps.vocab.nounPlural;
4740
+ const degraded = degradedOf(deps, answer);
4675
4741
  if (namedCountry) {
4676
4742
  const [only] = countries;
4677
4743
  return {
@@ -4683,8 +4749,9 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
4683
4749
  ask: { city: asked.city, ...stayArgs },
4684
4750
  ...(ask.stay ? { stay: ask.stay } : {}),
4685
4751
  ...(today ? { today } : {}),
4752
+ ...degraded.structured,
4686
4753
  },
4687
- text: `${total} ${branded(deps.vocab, n)} in ${only?.name}, in ${only?.cities.length} cities to choose from: ${every(only?.cities ?? [])}. A city lists its ${n}; \`all\` lists every one in ${only?.name}. ${forPlans}`,
4754
+ text: `${total} ${branded(deps.vocab, n)} in ${only?.name}, in ${only?.cities.length} cities to choose from: ${every(only?.cities ?? [])}. A city lists its ${n}; \`all\` lists every one in ${only?.name}. ${degraded.said ? `${degraded.said} ` : ''}${forPlans}`,
4688
4755
  };
4689
4756
  }
4690
4757
  const regions = [
@@ -4707,11 +4774,13 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
4707
4774
  ask: { ...stayArgs },
4708
4775
  ...(ask.stay ? { stay: ask.stay } : {}),
4709
4776
  ...(today ? { today } : {}),
4777
+ ...degraded.structured,
4710
4778
  },
4711
- text: `${total} ${branded(deps.vocab, n)} in ${facets.cities.length} cities across ${countries.length} ${countries.length === 1 ? 'country' : 'countries'}, to choose from by region, country and city - ${regions.map((r) => `${r.name}: ${ctx.noCards ? everyWithCities(r.countries) : every(r.countries)}`).join('; ')}. A city or a country lists its ${n}. ${forPlans}`,
4779
+ text: `${total} ${branded(deps.vocab, n)} in ${facets.cities.length} cities across ${countries.length} ${countries.length === 1 ? 'country' : 'countries'}, to choose from by region, country and city - ${regions.map((r) => `${r.name}: ${ctx.noCards ? everyWithCities(r.countries) : every(r.countries)}`).join('; ')}. A city or a country lists its ${n}. ${degraded.said ? `${degraded.said} ` : ''}${forPlans}`,
4712
4780
  };
4713
4781
  }
4714
4782
  if (hotels.length === 0) {
4783
+ const degraded = degradedOf(deps, answer);
4715
4784
  const nearest = (answer.nearest ?? []).map((h) => ({
4716
4785
  ...h,
4717
4786
  summary: hotelText('description', h.name, h.summary, DESCRIPTION_MAX).text,
@@ -4759,6 +4828,8 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
4759
4828
  ...(nearest.length ? { nearest, overBudget: answer.overBudget } : {}),
4760
4829
  ...(ask.stay ? { stay: ask.stay } : {}),
4761
4830
  ...(widened?.found ? { widened } : {}),
4831
+ // Nothing found while a group did not answer is not "none here".
4832
+ ...degraded.structured,
4762
4833
  // Why it is empty, in the words the model is told, so the card says
4763
4834
  // the same thing rather than guessing at it.
4764
4835
  why,
@@ -4776,6 +4847,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
4776
4847
  text: [
4777
4848
  widened?.found ? `Nothing matched ${widened.from}, so this looked in ${widened.to}.` : '',
4778
4849
  why,
4850
+ degraded.said,
4779
4851
  ]
4780
4852
  .filter(Boolean)
4781
4853
  .join(' '),
@@ -4851,6 +4923,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
4851
4923
  priceNotes.push(notSold);
4852
4924
  // Every one by name and city, and that there are no others - or, told
4853
4925
  // only "2 hotels", the model asked for the list again to learn which.
4926
+ const degraded = degradedOf(deps, answer);
4854
4927
  const inAll = homeList
4855
4928
  ? `This connector has ${total} ${branded(deps.vocab, deps.vocab.nounPlural)} in all, and this answer lists every one: ${hotels
4856
4929
  .map((h) => `${hotelName(h.name)}${h.city ? ` in ${h.city}` : ''}`)
@@ -4903,6 +4976,8 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
4903
4976
  ...(answer.overBudget ? { overBudget: answer.overBudget } : {}),
4904
4977
  ...(widened?.found ? { widened } : {}),
4905
4978
  ...(answer.currencies.length > 1 ? { currencies: answer.currencies } : {}),
4979
+ // A group that did not answer, in both: the card draws a line from it.
4980
+ ...degraded.structured,
4906
4981
  // In both, like a plan's: a host with no card may hand its model this
4907
4982
  // rather than the text.
4908
4983
  ...(ctx.noCards ? { notDrawn: LIST_NOT_DRAWN } : {}),
@@ -4920,6 +4995,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
4920
4995
  : '',
4921
4996
  ...priceNotes,
4922
4997
  widened?.found ? `Nothing matched ${widened.from}, so this is ${widened.to}.` : '',
4998
+ degraded.said,
4923
4999
  ctx.noCards && hotels.length
4924
5000
  ? `\n${LIST_NOT_DRAWN}\n${hotels.map(listedInWords).join('\n')}\n`
4925
5001
  : '',
@@ -5120,6 +5196,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
5120
5196
  /** For each name that fits more than one, which ones - see `namesLike`. */
5121
5197
  const candidates = [];
5122
5198
  let total = 0;
5199
+ let degradedFound = {};
5123
5200
  if (named.length) {
5124
5201
  for (const ref of named) {
5125
5202
  const found = await deps.backend.getHotel(ref);
@@ -5139,7 +5216,9 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
5139
5216
  const found = await deps.backend.searchHotels({ city, limit: LOOK_UP_MAX }, who);
5140
5217
  ids.push(...found.hotels.map((h) => h.id));
5141
5218
  total = found.total;
5219
+ degradedFound = found;
5142
5220
  }
5221
+ const degraded = degradedOf(deps, degradedFound);
5143
5222
  const unique = [...new Set(ids)];
5144
5223
  // A name that fits more than one is said with the ones it fits; the rest are not found.
5145
5224
  const notFound = dropped.filter((d) => !candidates.some((c) => c.for === d));
@@ -5151,9 +5230,10 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
5151
5230
  ...common(deps, key),
5152
5231
  ...(dropped.length ? { dropped } : {}),
5153
5232
  ...(candidates.length ? { candidates } : {}),
5233
+ ...degraded.structured,
5154
5234
  },
5155
5235
  text: city
5156
- ? `No ${branded(deps.vocab, deps.vocab.nounPlural)} in "${city}". ${t.listHotels} with no place shows the places there are.`
5236
+ ? `No ${branded(deps.vocab, deps.vocab.nounPlural)} in "${city}". ${degraded.said ? `${degraded.said} ` : ''}${t.listHotels} with no place shows the places there are.`
5157
5237
  : named.length
5158
5238
  ? [
5159
5239
  notFound.length
@@ -5222,9 +5302,11 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
5222
5302
  total,
5223
5303
  ...(dropped.length ? { dropped } : {}),
5224
5304
  ...(candidates.length ? { candidates } : {}),
5305
+ ...degraded.structured,
5225
5306
  },
5226
5307
  text: [
5227
5308
  `Read ${read.length}${total > read.length ? ` of ${total}` : ''} ${read.length === 1 ? deps.vocab.noun : deps.vocab.nounPlural}. Nothing was shown to the guest.`,
5309
+ degraded.said,
5228
5310
  ...blocks,
5229
5311
  notFound.length ? `Not found: ${notFound.map((d) => `"${d}"`).join(', ')}.` : '',
5230
5312
  ...fitsMany,