@curless/hotel-storefront 0.33.2 → 0.35.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 (71) hide show
  1. package/dist/aggregate/hotels.d.ts.map +1 -1
  2. package/dist/aggregate/hotels.js +7 -1
  3. package/dist/aggregate/hotels.js.map +1 -1
  4. package/dist/aggregate/make.d.ts.map +1 -1
  5. package/dist/aggregate/make.js +7 -1
  6. package/dist/aggregate/make.js.map +1 -1
  7. package/dist/backend.d.ts +4 -3
  8. package/dist/backend.d.ts.map +1 -1
  9. package/dist/backend.js.map +1 -1
  10. package/dist/card.generated.d.ts +1 -1
  11. package/dist/card.generated.js +2 -2
  12. package/dist/card.generated.js.map +1 -1
  13. package/dist/config.d.ts +13 -0
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js.map +1 -1
  16. package/dist/data.d.ts.map +1 -1
  17. package/dist/data.js +41 -0
  18. package/dist/data.js.map +1 -1
  19. package/dist/demo-hotels.d.ts +5 -1
  20. package/dist/demo-hotels.d.ts.map +1 -1
  21. package/dist/demo-hotels.js +41 -9
  22. package/dist/demo-hotels.js.map +1 -1
  23. package/dist/huazhu/backend.d.ts +2 -2
  24. package/dist/huazhu/backend.d.ts.map +1 -1
  25. package/dist/huazhu/backend.js +66 -9
  26. package/dist/huazhu/backend.js.map +1 -1
  27. package/dist/huazhu/catalog.d.ts +19 -2
  28. package/dist/huazhu/catalog.d.ts.map +1 -1
  29. package/dist/huazhu/catalog.js +63 -15
  30. package/dist/huazhu/catalog.js.map +1 -1
  31. package/dist/huazhu/fake.js +1 -1
  32. package/dist/huazhu/sandbox.d.ts.map +1 -1
  33. package/dist/huazhu/sandbox.js +9 -12
  34. package/dist/huazhu/sandbox.js.map +1 -1
  35. package/dist/legal.d.ts.map +1 -1
  36. package/dist/legal.js +118 -82
  37. package/dist/legal.js.map +1 -1
  38. package/dist/names.d.ts +13 -0
  39. package/dist/names.d.ts.map +1 -0
  40. package/dist/names.js +54 -0
  41. package/dist/names.js.map +1 -0
  42. package/dist/payments/checkout.d.ts +24 -1
  43. package/dist/payments/checkout.d.ts.map +1 -1
  44. package/dist/payments/checkout.js.map +1 -1
  45. package/dist/payments/fake-stripe.d.ts +34 -0
  46. package/dist/payments/fake-stripe.d.ts.map +1 -0
  47. package/dist/payments/fake-stripe.js +93 -0
  48. package/dist/payments/fake-stripe.js.map +1 -0
  49. package/dist/payments/stripe-checkout.d.ts +36 -0
  50. package/dist/payments/stripe-checkout.d.ts.map +1 -0
  51. package/dist/payments/stripe-checkout.js +126 -0
  52. package/dist/payments/stripe-checkout.js.map +1 -0
  53. package/dist/present.d.ts +16 -1
  54. package/dist/present.d.ts.map +1 -1
  55. package/dist/present.js +13 -1
  56. package/dist/present.js.map +1 -1
  57. package/dist/server.d.ts +2 -2
  58. package/dist/server.js +2 -2
  59. package/dist/surface.d.ts.map +1 -1
  60. package/dist/surface.js +34 -20
  61. package/dist/surface.js.map +1 -1
  62. package/dist/tools.d.ts.map +1 -1
  63. package/dist/tools.js +73 -31
  64. package/dist/tools.js.map +1 -1
  65. package/dist/types.d.ts +54 -0
  66. package/dist/types.d.ts.map +1 -1
  67. package/dist/vocab.d.ts +13 -0
  68. package/dist/vocab.d.ts.map +1 -1
  69. package/dist/vocab.js +22 -2
  70. package/dist/vocab.js.map +1 -1
  71. package/package.json +2 -1
@@ -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":"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;AAkBhD,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAkBV,eAAe,EAKhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAa,KAAK,UAAU,EAA+B,MAAM,YAAY,CAAC;AAuFrF,+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,eAAO,MAAM,aAAa,GAAI,GAAG,SAAS,EAAE,MAAM,mBAAmB,KAAG,GAAG,CAAC,MAAM,CAM9E,CAAC;AA6zBL;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,mBAAmB,EACzB,OAAO,IAAI,EACX,OAAM;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,KACtF,MAAM,CAAC,MAAM,EAAE,OAAO,CA6CxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA0OtE,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;;;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;CACjB,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;CACb,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;AAwnCF;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAyJjC;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,QAAQ,KAAG,UAMzC,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,MAAM,QAAQ,EACd,MAAM,MAAM,EACZ,SAAS,OAAO,EAChB,KAAK,WAAW,KACf,OAAO,CAAC,UAAU,CAMpB,CAAC"}
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;AAmBhD,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAmBV,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,eAAO,MAAM,aAAa,GAAI,GAAG,SAAS,EAAE,MAAM,mBAAmB,KAAG,GAAG,CAAC,MAAM,CAM9E,CAAC;AAm0BL;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,mBAAmB,EACzB,OAAO,IAAI,EACX,OAAM;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,KACtF,MAAM,CAAC,MAAM,EAAE,OAAO,CA6CxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CA0OtE,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;;;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;CACjB,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;CACb,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;AAqpCF;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAyJjC;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,QAAQ,KAAG,UAMzC,CAAC;AAEF,eAAO,MAAM,UAAU,GACrB,MAAM,QAAQ,EACd,MAAM,MAAM,EACZ,SAAS,OAAO,EAChB,KAAK,WAAW,KACf,OAAO,CAAC,UAAU,CAQpB,CAAC"}
package/dist/tools.js CHANGED
@@ -4,10 +4,11 @@ import { FACILITIES } from './facilities.js';
4
4
  import { DESCRIPTION_MAX, POLICY_MAX, guestText, hotelText } from './fence.js';
5
5
  import { clockOf, minutesOf, startProblem, stayWords, windowWords } from './hourly.js';
6
6
  import { formatMoney, money, multiplyMoney, toMinor } from './money.js';
7
+ import { withTraditional } from './names.js';
7
8
  import { MAX_COMPARED, MAX_CONS, MAX_DAYS, MAX_ITEMS_PER_DAY, MAX_MOMENTS, MAX_PROS, buildItinerary, candidatesFor, compareHotels, namesMoreThanOne, } from './present.js';
8
9
  import { regionOf } from './regions.js';
9
10
  import { MAX_EXTRA_QUANTITY, MAX_ROOMS_PER_LINE, TRIP_TTL_MS, clampCount, shownOf, tripKey, } from './trip.js';
10
- import { DEMO_NOTE, branded, catalogue, upFirst } from './vocab.js';
11
+ import { DEMO_NOTE, branded, catalogue, noteFor, upFirst } from './vocab.js';
11
12
  // The eleven things a guest can do: find hotels, look at one on dates, see what
12
13
  // else it offers, build a trip, ask for the rooms, and deal with a booking they
13
14
  // already have.
@@ -207,11 +208,15 @@ const forCapabilities = (tools, n, v, caps) => {
207
208
  // ⚠️ A SANDBOX BOOKS NOTHING REAL, and its description says so
208
209
  // itself: the instructions carried "test environment" while this
209
210
  // line still promised "the hotel's own reservation" (2026-09-30).
210
- description: v.sandbox
211
- ? `Makes a booking in a simulated copy of ${v.brand}'s booking system, for testing: each stay gets its own confirmation code there, and none of it is a ${v.brand} reservation or holds a real room. ${caps.prepaid
211
+ description: v.test
212
+ ? `Makes a test booking in ${v.brand}'s own test system, for testing: each stay gets its own confirmation code there, and none of it holds a room for anyone or is a stay anyone goes to. ${caps.prepaid
212
213
  ? 'A rate marked paid in advance is booked on its own, and not at once: the answer gives a card page in test mode and the time it is paid by, and the stay is booked once it is paid - no card is collected here. Every other rate is paid by nobody.'
213
214
  : 'No payment is taken and no card is collected.'} All of the trip is booked or none of it. Preferences - a bed type, a floor, a late arrival - ride along on the booking as requests.`
214
- : `Books the trip's rooms with ${v.brand} for a named guest: each stay becomes the hotel's own reservation, with its own confirmation code, paid at the hotel. No payment is taken here and no card is collected. All of the trip is booked or none of it. Preferences - a bed type, a floor, a late arrival - ride along on the booking as requests the desk tries to meet.`,
215
+ : v.sandbox
216
+ ? `Makes a booking in a simulated copy of ${v.brand}'s booking system, for testing: each stay gets its own confirmation code there, and none of it is a ${v.brand} reservation or holds a real room. ${caps.prepaid
217
+ ? 'A rate marked paid in advance is booked on its own, and not at once: the answer gives a card page in test mode and the time it is paid by, and the stay is booked once it is paid - no card is collected here. Every other rate is paid by nobody.'
218
+ : 'No payment is taken and no card is collected.'} All of the trip is booked or none of it. Preferences - a bed type, a floor, a late arrival - ride along on the booking as requests.`
219
+ : `Books the trip's rooms with ${v.brand} for a named guest: each stay becomes the hotel's own reservation, with its own confirmation code, paid at the hotel. No payment is taken here and no card is collected. All of the trip is booked or none of it. Preferences - a bed type, a floor, a late arrival - ride along on the booking as requests the desk tries to meet.`,
215
220
  };
216
221
  }
217
222
  }
@@ -1291,12 +1296,14 @@ const holderOf = (deps, supplier) => {
1291
1296
  caps: s.capabilities,
1292
1297
  demo: s.mode !== 'live',
1293
1298
  sandbox: s.mode === 'sandbox',
1299
+ test: s.mode === 'test',
1294
1300
  };
1295
1301
  return {
1296
1302
  name: deps.vocab.brand,
1297
1303
  caps: deps.backend.capabilities ?? FULL_CAPABILITIES,
1298
1304
  demo: deps.vocab.demo,
1299
1305
  sandbox: !!deps.vocab.sandbox,
1306
+ test: !!deps.vocab.test,
1300
1307
  };
1301
1308
  };
1302
1309
  /**
@@ -1331,7 +1338,9 @@ const paidLine = (deps, b) => {
1331
1338
  const amount = formatMoney(p.amount);
1332
1339
  const test = h.sandbox
1333
1340
  ? ' This is a test: the card page is in test mode, no real money moves, and the booking is in the simulated system.'
1334
- : '';
1341
+ : h.test
1342
+ ? ` This is a test: the card page is in test mode, no real money moves, and the booking is a test booking in ${h.name}'s test system.`
1343
+ : '';
1335
1344
  switch (p.status) {
1336
1345
  case 'awaiting':
1337
1346
  return `**Not booked yet, and nothing paid.** ${amount} is paid on the card page by ${p.payByLocal ?? p.payBy} hotel time: ${p.url}. Once it is paid the stay is booked with ${h.name}, and ${deps.tools.listBookings} shows it; unpaid by then, the page closes and nothing is booked or charged.${test}`;
@@ -1371,6 +1380,8 @@ const bookedLine = (deps, b) => {
1371
1380
  if (h.caps.booking === 'pay-at-hotel') {
1372
1381
  if (h.sandbox)
1373
1382
  return `${total} in the simulated system. **This is a test booking** - not a ${h.name} reservation: no room is held and nothing is paid, now or at any hotel.`;
1383
+ if (h.test)
1384
+ return `${total} in ${h.name}'s test system. **This is a test booking** - it holds no room for anyone, nothing is paid, now or at any hotel, and nobody needs to go there.`;
1374
1385
  return b.status === 'requested'
1375
1386
  ? `${total} all in, to be paid at the hotel. ${h.name} has not confirmed this booking yet - that takes up to eight minutes, and ${deps.tools.listBookings} shows when it has. Nothing has been charged.`
1376
1387
  : `${total} all in, paid at the hotel. **Nothing has been charged here** - this is ${h.name}'s own reservation, kept until it is cancelled, and ${b.guest.name} pays at check-in.`;
@@ -1412,6 +1423,8 @@ const common = (deps, key) => {
1412
1423
  // In a market each group says whether it needs a phone (`market.suppliers`).
1413
1424
  ...(caps.requiresPhone && !deps.backend.suppliers ? { phoneRequired: true } : {}),
1414
1425
  ...(deps.vocab.sandbox ? { sandbox: true } : {}),
1426
+ // The group's own test system: the card says "test", never "simulated".
1427
+ ...(deps.vocab.test ? { test: true } : {}),
1415
1428
  ...(caps.programme ? { programme: caps.programme } : {}),
1416
1429
  ...(caps.codePrefix ? { codePrefix: caps.codePrefix } : {}),
1417
1430
  // Sells rooms by the hour: the card draws its Overnight / By the hour
@@ -1423,7 +1436,7 @@ const common = (deps, key) => {
1423
1436
  ? { market: { name: deps.vocab.brand, suppliers: deps.backend.suppliers() } }
1424
1437
  : {}),
1425
1438
  vocab: { noun: deps.vocab.noun, nounPlural: deps.vocab.nounPlural },
1426
- ...(deps.vocab.demo ? { demo: true, demoNote: DEMO_NOTE } : { demo: false }),
1439
+ ...(deps.vocab.demo ? { demo: true, demoNote: noteFor(deps.vocab) } : { demo: false }),
1427
1440
  ...(key ? memberBadge(deps, key) : {}),
1428
1441
  ...(langOf(deps, key) ? { lang: langOf(deps, key) } : {}),
1429
1442
  };
@@ -1453,6 +1466,7 @@ const quoteForCard = (quote, groupOf) => ({
1453
1466
  // In a market: whose stay this is, so the card books it with that group.
1454
1467
  ...(groupOf?.(l.hotelId) ? { supplier: groupOf(l.hotelId) } : {}),
1455
1468
  hotelName: l.hotelName,
1469
+ ...(l.hotelNames ? { hotelNames: l.hotelNames } : {}),
1456
1470
  roomRef: l.roomRef,
1457
1471
  extraRef: l.extraRef,
1458
1472
  title: l.title,
@@ -1461,6 +1475,7 @@ const quoteForCard = (quote, groupOf) => ({
1461
1475
  ...(l.bedTypes ? { bedTypes: l.bedTypes } : {}),
1462
1476
  ...(l.window ? { window: l.window } : {}),
1463
1477
  ...(l.meal ? { meal: l.meal } : {}),
1478
+ ...(l.rate ? { rate: l.rate } : {}),
1464
1479
  stay: l.stay,
1465
1480
  nights: l.nights,
1466
1481
  ...(l.hourly ? { hourly: l.hourly } : {}),
@@ -2025,7 +2040,12 @@ const needsRoomIn = (t, lines, parts) => {
2025
2040
  for (const l of parts.flatMap((p) => p.lines)) {
2026
2041
  if (l.kind !== 'extra' || roomed.has(l.hotelId))
2027
2042
  continue;
2028
- const at = by.get(l.hotelId) ?? { hotelId: l.hotelId, hotelName: l.hotelName, extras: [] };
2043
+ const at = by.get(l.hotelId) ?? {
2044
+ hotelId: l.hotelId,
2045
+ hotelName: l.hotelName,
2046
+ ...(l.hotelNames ? { hotelNames: l.hotelNames } : {}),
2047
+ extras: [],
2048
+ };
2029
2049
  at.extras.push(l.title);
2030
2050
  by.set(l.hotelId, at);
2031
2051
  }
@@ -2060,7 +2080,11 @@ const currentTrip = async (deps, key, who) => {
2060
2080
  ...needs,
2061
2081
  count: lines.length,
2062
2082
  },
2063
- text: [tripText(only, false), orphans.line, deps.vocab.demo && lines.length ? DEMO_NOTE : '']
2083
+ text: [
2084
+ tripText(only, false),
2085
+ orphans.line,
2086
+ deps.vocab.demo && lines.length ? noteFor(deps.vocab) : '',
2087
+ ]
2064
2088
  .filter(Boolean)
2065
2089
  .join('\n'),
2066
2090
  };
@@ -2101,7 +2125,7 @@ const currentTrip = async (deps, key, who) => {
2101
2125
  `This trip is in ${parts.length} currencies, priced separately and not converted - each hotel is booked and paid in its own.`,
2102
2126
  ...parts.map((q) => tripText(q, false)),
2103
2127
  orphans.line,
2104
- deps.vocab.demo ? DEMO_NOTE : '',
2128
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
2105
2129
  ]
2106
2130
  .filter(Boolean)
2107
2131
  .join('\n\n'),
@@ -2338,9 +2362,9 @@ export const tripGone = (deps) => {
2338
2362
  export const handleTool = async (deps, name, rawArgs, ctx) => {
2339
2363
  const answer = await answerTool(deps, name, rawArgs, ctx);
2340
2364
  const suggestions = await suggestionsFor(deps, answer.structured).catch(() => []);
2341
- return suggestions.length
2342
- ? { ...answer, structured: { ...answer.structured, suggestions } }
2343
- : answer;
2365
+ // Every name the card is handed, in Traditional Chinese too - see names.ts.
2366
+ const structured = withTraditional(suggestions.length ? { ...answer.structured, suggestions } : answer.structured);
2367
+ return { ...answer, structured };
2344
2368
  };
2345
2369
  /**
2346
2370
  * For each left-out name that fits more than one hotel, the sentence that says
@@ -2457,18 +2481,32 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
2457
2481
  // offers its cities; one city offers nothing, because it is already there.
2458
2482
  const facets = answer.facets;
2459
2483
  const narrowedTo = asked.city?.toLowerCase();
2484
+ // A place as a chip: its own name is what it is asked by again, and its
2485
+ // names - or its country's code - what the card says it in (robin, 2026-10-15).
2486
+ const cityPlace = (c) => ({
2487
+ label: c.name,
2488
+ place: c.name,
2489
+ count: c.count,
2490
+ ...(c.names ? { names: c.names } : {}),
2491
+ });
2492
+ const countryPlace = (c) => ({
2493
+ label: c.name,
2494
+ place: c.name,
2495
+ count: c.count,
2496
+ ...(c.code ? { code: c.code } : {}),
2497
+ });
2460
2498
  const places = !facets
2461
2499
  ? []
2462
2500
  : asked.query
2463
2501
  ? facets.cities.length > 1
2464
- ? facets.cities.map((c) => ({ label: c.name, place: c.name, count: c.count }))
2502
+ ? facets.cities.map(cityPlace)
2465
2503
  : []
2466
2504
  : !narrowedTo
2467
2505
  ? facets.countries.length > 1
2468
- ? facets.countries.map((c) => ({ label: c.name, place: c.name, count: c.count }))
2506
+ ? facets.countries.map(countryPlace)
2469
2507
  : []
2470
2508
  : facets.cities.length > 1
2471
- ? facets.cities.map((c) => ({ label: c.name, place: c.name, count: c.count }))
2509
+ ? facets.cities.map(cityPlace)
2472
2510
  : [];
2473
2511
  // ⚠️ THE MISSES ARE THE ANSWER when a ceiling is what emptied the list. A
2474
2512
  // guest asking for under HK$1,000 learns nothing from "no hotels"; told the
@@ -2539,9 +2577,10 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
2539
2577
  const countries = facets.countries.map((c) => ({
2540
2578
  name: c.name,
2541
2579
  count: c.count,
2580
+ ...(c.code ? { code: c.code } : {}),
2542
2581
  cities: facets.cities
2543
2582
  .filter((x) => x.country === c.name)
2544
- .map((x) => ({ name: x.name, count: x.count })),
2583
+ .map((x) => ({ name: x.name, count: x.count, ...(x.names ? { names: x.names } : {}) })),
2545
2584
  }));
2546
2585
  // Every place, counted: a host with no card has only this sentence, and
2547
2586
  // "the most are in" three of forty cities left the other thirty-seven
@@ -2899,7 +2938,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
2899
2938
  : `**${h.name}** · ${offerCount(enough)} for ${stay.checkIn} to ${stay.checkOut}, ${stay.guests} guests${roomsWanted > 1 ? `, ${roomsWanted} rooms` : ''}.`,
2900
2939
  ...enough.map((r) => `- ${r.name}${labelWords(r)} — ${priceWords(r)}${roomsWanted > 1 ? ` (${formatMoney(multiplyMoney(r.stayTotal, roomsWanted))} for ${roomsWanted} rooms)` : ''}${r.freeCancellationUntil ? `, free to cancel until ${freeUntilText(r)}` : r.refundable ? ', the free cancellation window has closed - cancelling now has a fee' : ', non-refundable'}`),
2901
2940
  flex.text,
2902
- deps.vocab.demo ? DEMO_NOTE : '',
2941
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
2903
2942
  ]
2904
2943
  .filter(Boolean)
2905
2944
  .join('\n'),
@@ -3032,7 +3071,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
3032
3071
  // Only tools this deployment offers: a name it withholds is one the
3033
3072
  // model would try (2026-10-05 audit, P2 - Huazhu has no add-ons).
3034
3073
  [t.listHotels, t.getHotel, t.listExtras].filter((n) => !deps.offered || deps.offered.has(n)))} would each draw a card of their own.`,
3035
- deps.vocab.demo ? DEMO_NOTE : '',
3074
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
3036
3075
  ]
3037
3076
  .filter(Boolean)
3038
3077
  .join('\n\n'),
@@ -3116,7 +3155,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
3116
3155
  text: extras.length
3117
3156
  ? extras
3118
3157
  .map((e) => `- ${e.name} — ${formatMoney(e.price)} ${unitWords(e.per)}${held[e.id] ? ` (${booked?.confirmationCode} holds ${held[e.id]})` : ''}`)
3119
- .concat(deps.vocab.demo ? [DEMO_NOTE] : [])
3158
+ .concat(deps.vocab.demo ? [noteFor(deps.vocab)] : [])
3120
3159
  .join('\n')
3121
3160
  : `${detail.hotel.name} has no add-ons listed here.`,
3122
3161
  };
@@ -3557,7 +3596,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
3557
3596
  ...failedText,
3558
3597
  remembered?.line ?? '',
3559
3598
  others ? `The trip's other stays are still in it, not booked:\n${rest?.text ?? ''}` : '',
3560
- deps.vocab.demo ? DEMO_NOTE : '',
3599
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
3561
3600
  ]
3562
3601
  .filter(Boolean)
3563
3602
  .join('\n'),
@@ -3680,6 +3719,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
3680
3719
  ...common(deps, key),
3681
3720
  booking: { id: preview.bookingId, confirmationCode: preview.confirmationCode },
3682
3721
  hotelName: preview.hotelName,
3722
+ ...(preview.hotelNames ? { hotelNames: preview.hotelNames } : {}),
3683
3723
  from: stayOf(preview.from),
3684
3724
  ...(preview.to ? { to: stayOf(preview.to) } : {}),
3685
3725
  ...(diff ? { difference: diff, refundDue } : {}),
@@ -3700,7 +3740,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
3700
3740
  preview.rule,
3701
3741
  `Say the word and it moves (${t.changeBooking} with \`confirmed\`).`,
3702
3742
  demoBookingNote(deps, preview.supplier),
3703
- deps.vocab.demo ? DEMO_NOTE : '',
3743
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
3704
3744
  ]
3705
3745
  .filter(Boolean)
3706
3746
  .join(' ')
@@ -3763,7 +3803,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
3763
3803
  `${changed.confirmationCode} now holds ${changed.stay.checkIn} to ${changed.stay.checkOut}, ${formatMoney(changed.quote.total)} all in.`,
3764
3804
  'The confirmation code has not changed. **Nothing has been charged.**',
3765
3805
  demoBookingNote(deps, changed.supplier),
3766
- deps.vocab.demo ? DEMO_NOTE : '',
3806
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
3767
3807
  ]
3768
3808
  .filter(Boolean)
3769
3809
  .join(' '),
@@ -3811,7 +3851,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
3811
3851
  ? `Say the word and it is cancelled (${t.cancelBooking} with \`confirmed\`).`
3812
3852
  : '',
3813
3853
  demoBookingNote(deps, preview.supplier),
3814
- deps.vocab.demo ? DEMO_NOTE : '',
3854
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
3815
3855
  ]
3816
3856
  .filter(Boolean)
3817
3857
  .join(' '),
@@ -3863,12 +3903,14 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
3863
3903
  : h.sandbox
3864
3904
  ? // A test booking cancelled in the simulation: no hotel, no charge (2026-10-05 audit, P2).
3865
3905
  `${cancelled.confirmationCode} is cancelled in the simulated system. ${charged.minor === 0 ? 'No fee.' : `A real booking on this rate would be charged ${formatMoney(charged)}; this one is a test, and nothing is charged.`}`
3866
- : h.demo
3867
- ? // Nobody charges a demonstration anything (2026-10-05 audit, P2).
3868
- `${cancelled.confirmationCode} is cancelled. ${charged.minor === 0 ? 'No fee.' : `A real booking on this rate would be charged ${formatMoney(charged)}; this is a demonstration, and nothing is charged.`}`
3869
- : `${cancelled.confirmationCode} is cancelled. ${charged.minor === 0 ? 'No fee.' : `The hotel charges ${formatMoney(charged)}.`}`,
3906
+ : h.test
3907
+ ? `${cancelled.confirmationCode} is cancelled in ${h.name}'s test system. ${charged.minor === 0 ? 'No fee.' : `A live booking on this rate would be charged ${formatMoney(charged)}; this one is a test, and nothing is charged.`}`
3908
+ : h.demo
3909
+ ? // Nobody charges a demonstration anything (2026-10-05 audit, P2).
3910
+ `${cancelled.confirmationCode} is cancelled. ${charged.minor === 0 ? 'No fee.' : `A real booking on this rate would be charged ${formatMoney(charged)}; this is a demonstration, and nothing is charged.`}`
3911
+ : `${cancelled.confirmationCode} is cancelled. ${charged.minor === 0 ? 'No fee.' : `The hotel charges ${formatMoney(charged)}.`}`,
3870
3912
  demoBookingNote(deps, cancelled.supplier),
3871
- deps.vocab.demo ? DEMO_NOTE : '',
3913
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
3872
3914
  ]
3873
3915
  .filter(Boolean)
3874
3916
  .join(' '),
@@ -3932,7 +3974,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
3932
3974
  : '',
3933
3975
  ...comparison.dropped.map((d) => `Left out: ${d.name} — ${d.why}`),
3934
3976
  ...fitsManyOf(deps, comparison.dropped),
3935
- deps.vocab.demo ? DEMO_NOTE : '',
3977
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
3936
3978
  ]
3937
3979
  .filter(Boolean)
3938
3980
  .join('\n'),
@@ -3976,7 +4018,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
3976
4018
  stays.length ? `Stays, priced on: ${stays.join('; ')}.` : '',
3977
4019
  ...plan.dropped.map((d) => `Left out: ${d.name} — ${d.why}`),
3978
4020
  ...fitsManyOf(deps, plan.dropped),
3979
- deps.vocab.demo ? DEMO_NOTE : '',
4021
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
3980
4022
  ]
3981
4023
  .filter(Boolean)
3982
4024
  .join('\n'),
@@ -4025,7 +4067,7 @@ const answerTool = async (deps, name, rawArgs, ctx) => {
4025
4067
  member.preferences?.length
4026
4068
  ? `Saved preferences on this membership: ${member.preferences.map((k) => REQUEST_WORDS[k]).join(', ')}. They are ticked on the booking form; mention them, and ask before booking with them.`
4027
4069
  : '',
4028
- deps.vocab.demo ? DEMO_NOTE : '',
4070
+ deps.vocab.demo ? noteFor(deps.vocab) : '',
4029
4071
  ]
4030
4072
  .filter(Boolean)
4031
4073
  .join(' '),