@curless/hotel-storefront 0.27.5 → 0.27.6

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 (105) hide show
  1. package/README.md +18 -8
  2. package/dist/fence.d.ts +12 -1
  3. package/dist/fence.d.ts.map +1 -1
  4. package/dist/fence.js +0 -0
  5. package/dist/fence.js.map +1 -1
  6. package/dist/legal.js +1 -1
  7. package/dist/legal.js.map +1 -1
  8. package/dist/money.d.ts +2 -0
  9. package/dist/money.d.ts.map +1 -1
  10. package/dist/money.js +43 -6
  11. package/dist/money.js.map +1 -1
  12. package/dist/server.d.ts +1 -1
  13. package/dist/server.d.ts.map +1 -1
  14. package/dist/server.js +9 -1
  15. package/dist/server.js.map +1 -1
  16. package/dist/sessions.d.ts.map +1 -1
  17. package/dist/sessions.js +3 -2
  18. package/dist/sessions.js.map +1 -1
  19. package/dist/surface.d.ts +2 -0
  20. package/dist/surface.d.ts.map +1 -1
  21. package/dist/surface.js +10 -1
  22. package/dist/surface.js.map +1 -1
  23. package/dist/tools.d.ts +4 -4
  24. package/dist/tools.d.ts.map +1 -1
  25. package/dist/tools.js +21 -8
  26. package/dist/tools.js.map +1 -1
  27. package/dist/trip-ids.js +1 -1
  28. package/dist/trip-ids.js.map +1 -1
  29. package/package.json +2 -2
  30. package/dist/__tests__/__fixtures__/huazhu-fake.d.ts +0 -2
  31. package/dist/__tests__/__fixtures__/huazhu-fake.d.ts.map +0 -1
  32. package/dist/__tests__/__fixtures__/huazhu-fake.js +0 -3
  33. package/dist/__tests__/__fixtures__/huazhu-fake.js.map +0 -1
  34. package/dist/__tests__/__helpers__/sessions.d.ts +0 -10
  35. package/dist/__tests__/__helpers__/sessions.d.ts.map +0 -1
  36. package/dist/__tests__/__helpers__/sessions.js +0 -40
  37. package/dist/__tests__/__helpers__/sessions.js.map +0 -1
  38. package/dist/__tests__/audit-p0.test.d.ts +0 -2
  39. package/dist/__tests__/audit-p0.test.d.ts.map +0 -1
  40. package/dist/__tests__/audit-p0.test.js +0 -274
  41. package/dist/__tests__/audit-p0.test.js.map +0 -1
  42. package/dist/__tests__/audit-p2.test.d.ts +0 -2
  43. package/dist/__tests__/audit-p2.test.d.ts.map +0 -1
  44. package/dist/__tests__/audit-p2.test.js +0 -98
  45. package/dist/__tests__/audit-p2.test.js.map +0 -1
  46. package/dist/__tests__/card-contract.test.d.ts +0 -2
  47. package/dist/__tests__/card-contract.test.d.ts.map +0 -1
  48. package/dist/__tests__/card-contract.test.js +0 -282
  49. package/dist/__tests__/card-contract.test.js.map +0 -1
  50. package/dist/__tests__/data.test.d.ts +0 -2
  51. package/dist/__tests__/data.test.d.ts.map +0 -1
  52. package/dist/__tests__/data.test.js +0 -210
  53. package/dist/__tests__/data.test.js.map +0 -1
  54. package/dist/__tests__/dates.test.d.ts +0 -2
  55. package/dist/__tests__/dates.test.d.ts.map +0 -1
  56. package/dist/__tests__/dates.test.js +0 -107
  57. package/dist/__tests__/dates.test.js.map +0 -1
  58. package/dist/__tests__/demo-hotels.test.d.ts +0 -2
  59. package/dist/__tests__/demo-hotels.test.d.ts.map +0 -1
  60. package/dist/__tests__/demo-hotels.test.js +0 -765
  61. package/dist/__tests__/demo-hotels.test.js.map +0 -1
  62. package/dist/__tests__/huazhu-audit.test.d.ts +0 -2
  63. package/dist/__tests__/huazhu-audit.test.d.ts.map +0 -1
  64. package/dist/__tests__/huazhu-audit.test.js +0 -234
  65. package/dist/__tests__/huazhu-audit.test.js.map +0 -1
  66. package/dist/__tests__/huazhu-backend.test.d.ts +0 -2
  67. package/dist/__tests__/huazhu-backend.test.d.ts.map +0 -1
  68. package/dist/__tests__/huazhu-backend.test.js +0 -1326
  69. package/dist/__tests__/huazhu-backend.test.js.map +0 -1
  70. package/dist/__tests__/huazhu-cancel-policy.test.d.ts +0 -2
  71. package/dist/__tests__/huazhu-cancel-policy.test.d.ts.map +0 -1
  72. package/dist/__tests__/huazhu-cancel-policy.test.js +0 -82
  73. package/dist/__tests__/huazhu-cancel-policy.test.js.map +0 -1
  74. package/dist/__tests__/huazhu-sandbox.test.d.ts +0 -2
  75. package/dist/__tests__/huazhu-sandbox.test.d.ts.map +0 -1
  76. package/dist/__tests__/huazhu-sandbox.test.js +0 -195
  77. package/dist/__tests__/huazhu-sandbox.test.js.map +0 -1
  78. package/dist/__tests__/huazhu-sellable.test.d.ts +0 -2
  79. package/dist/__tests__/huazhu-sellable.test.d.ts.map +0 -1
  80. package/dist/__tests__/huazhu-sellable.test.js +0 -192
  81. package/dist/__tests__/huazhu-sellable.test.js.map +0 -1
  82. package/dist/__tests__/present.test.d.ts +0 -2
  83. package/dist/__tests__/present.test.d.ts.map +0 -1
  84. package/dist/__tests__/present.test.js +0 -367
  85. package/dist/__tests__/present.test.js.map +0 -1
  86. package/dist/__tests__/prose.test.d.ts +0 -2
  87. package/dist/__tests__/prose.test.d.ts.map +0 -1
  88. package/dist/__tests__/prose.test.js +0 -171
  89. package/dist/__tests__/prose.test.js.map +0 -1
  90. package/dist/__tests__/server.test.d.ts +0 -2
  91. package/dist/__tests__/server.test.d.ts.map +0 -1
  92. package/dist/__tests__/server.test.js +0 -557
  93. package/dist/__tests__/server.test.js.map +0 -1
  94. package/dist/__tests__/state.test.d.ts +0 -2
  95. package/dist/__tests__/state.test.d.ts.map +0 -1
  96. package/dist/__tests__/state.test.js +0 -204
  97. package/dist/__tests__/state.test.js.map +0 -1
  98. package/dist/__tests__/tool-descriptions.test.d.ts +0 -2
  99. package/dist/__tests__/tool-descriptions.test.d.ts.map +0 -1
  100. package/dist/__tests__/tool-descriptions.test.js +0 -220
  101. package/dist/__tests__/tool-descriptions.test.js.map +0 -1
  102. package/dist/__tests__/tools.test.d.ts +0 -2
  103. package/dist/__tests__/tools.test.d.ts.map +0 -1
  104. package/dist/__tests__/tools.test.js +0 -1598
  105. package/dist/__tests__/tools.test.js.map +0 -1
@@ -1,171 +0,0 @@
1
- // Every sentence this connector hands the model, held to one rule.
2
- //
3
- // ⚠️ THE MODEL'S ANSWER IS NOT ALWAYS A CARD. The same `text` is drawn beside
4
- // a card in one host, read out by a voice assistant in another, and printed
5
- // into a terminal in a third. "Tap one to see rooms" is an instruction a guest
6
- // with no card cannot follow, and "the 20 below" names a position that does not
7
- // exist in speech. Both shipped (2026-09-21) - `list_hotels` ended every
8
- // unnarrowed answer with one or the other.
9
- //
10
- // ⚠️ AND A CARD REFLOWS. Even where there IS a card, it is four columns on a
11
- // laptop and one on a phone, and it re-sorts when the guest changes the order:
12
- // "the second one" is a different hotel by the time the guest reads the
13
- // sentence. commerce-agents states this as a rule for the same reason, and
14
- // every price-bearing sentence here names the hotel or the date instead.
15
- //
16
- // The card's OWN copy is exempt and is not read here: a button inside the card
17
- // may say "Tap" because tapping it is what the card is for.
18
- import { fileURLToPath } from 'node:url';
19
- import { describe, expect, it } from 'vitest';
20
- import { loadHotelData } from '../data.js';
21
- import { createDemoHotels } from '../demo-hotels.js';
22
- import { MemberStore } from '../members.js';
23
- import { handleTool } from '../tools.js';
24
- import { TripStore } from '../trip.js';
25
- import { resolveBrand } from '../vocab.js';
26
- const DATA = loadHotelData(fileURLToPath(new URL('./__fixtures__/brand.json', import.meta.url)));
27
- const CONFIG = {
28
- id: 'shangrila',
29
- brand: 'Shangri-La',
30
- server: { name: 'shangrila-hotels', title: 'Shangri-La Hotels (demo)' },
31
- naming: { prefix: 'shangrila', noun: 'hotel', nounPlural: 'hotels' },
32
- data: { source: 'demo', file: 'data/hotels.json' },
33
- payment: { mode: 'none' },
34
- urls: { appUrl: 'https://hotels.curless.ai/shangrila' },
35
- legal: {},
36
- };
37
- const brand = resolveBrand(CONFIG);
38
- const t = brand.tools;
39
- const STAY = { checkIn: '2026-10-19', checkOut: '2026-10-21', guests: 2 };
40
- const clock = Date.parse('2026-10-01T02:00:00Z');
41
- /** A device the guest may not have, or an instruction they cannot follow. */
42
- const DEVICE = /\b(tap|tapping|click|clicking|swipe|scroll|hover|press the button)\b/i;
43
- /**
44
- * A position that is only a position in one layout, at one width, in one order.
45
- *
46
- * ⚠️ "ABOVE" AND "BELOW" CANNOT BE BANNED OUTRIGHT. Island Shangri-La is "the
47
- * group's Hong Kong flagship above Pacific Place" - the hotel's own words about
48
- * where the building is, which travel through this connector as the merchant
49
- * wrote them. A blunt /above|below/ fails on the description of a hotel that
50
- * sits over a shopping centre (tried, 2026-09-22). So what is matched is the
51
- * DEIXIS - a position handed to the reader as a way to identify something -
52
- * rather than the two words.
53
- */
54
- const POSITION = new RegExp([
55
- // "the 20 below", "the ones above", "see below", "those listed above"
56
- /\b(?:see|shown|listed|those|these|the ones?|the \d+)\s+(?:above|below)\b/.source,
57
- // "…and 3 more below." - a sentence that ends by pointing at a layout
58
- /\b(?:above|below)\s*[.,;]/.source,
59
- /\bon the (?:left|right)\b/.source,
60
- /\b(?:top|bottom) of the list\b/.source,
61
- // "the second one", "the last column"
62
- /\bthe (?:first|second|third|fourth|fifth|last) (?:one|item|card|column|option|hotel|room|result|entry)\b/
63
- .source,
64
- ].join('|'), 'i');
65
- const run = async () => {
66
- const deps = {
67
- backend: createDemoHotels({ data: DATA, now: () => clock, rng: () => 0.5 }),
68
- trips: new TripStore(() => clock),
69
- members: new MemberStore(() => clock),
70
- tools: t,
71
- vocab: brand.vocab,
72
- };
73
- const ctx = { session: 'prose' };
74
- const out = [];
75
- const call = async (name, args = {}) => {
76
- const res = await handleTool(deps, name, args, ctx);
77
- out.push({ name, args, text: res.text });
78
- return res;
79
- };
80
- // Every shape an answer comes in, including the ones that only appear when
81
- // something is refused - those are the sentences a guest reads most closely.
82
- await call(t.listHotels, {});
83
- await call(t.listHotels, { city: 'Hong Kong' });
84
- await call(t.listHotels, { limit: 2 });
85
- await call(t.listHotels, { sort: 'price-low' });
86
- await call(t.listHotels, { city: 'Hong Kong', sort: 'price-low' });
87
- await call(t.listHotels, { city: 'Hong Kong', maxNightly: 3000 });
88
- await call(t.listHotels, { city: 'Hong Kong', maxNightly: 500 });
89
- await call(t.listHotels, { city: 'Tokyo' });
90
- await call(t.listHotels, { city: 'Hong Kong', query: 'rooftop helipad' });
91
- await call(t.listHotels, { query: 'reykjavik' });
92
- await call(t.getHotel, { hotel: 'hong-kong-island' });
93
- await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY });
94
- await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY, rooms: 2 });
95
- await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY, guests: 6 });
96
- await call(t.getHotel, {
97
- hotel: 'hong-kong-island',
98
- checkIn: '2026-10-23',
99
- checkOut: '2026-10-25',
100
- });
101
- await call(t.getHotel, { hotel: 'atlantis' });
102
- await call(t.listExtras, { hotel: 'hong-kong-island', ...STAY });
103
- await call(t.compare, {
104
- hotels: ['hong-kong-island', 'hong-kong-kerry'],
105
- ...STAY,
106
- });
107
- await call(t.viewTrip, {});
108
- await call(t.requestBooking, {});
109
- await call(t.addToTrip, { hotel: 'hong-kong-island', room: 'deluxe-harbour' });
110
- await call(t.addToTrip, { hotel: 'hong-kong-island', room: 'deluxe-harbour', ...STAY, rooms: 2 });
111
- await call(t.addToTrip, { hotel: 'hong-kong-island', extra: 'airport-transfer' });
112
- await call(t.viewTrip, {});
113
- await call(t.itinerary, { days: [{ hotel: 'hong-kong-island', note: 'Arrive' }], ...STAY });
114
- const booked = await call(t.requestBooking, {
115
- name: 'Robin Ruan',
116
- email: 'robin@example.com',
117
- requests: ['king-bed', 'twin-beds', 'accessible-room', 'early-check-in'],
118
- arrivingAt: '23:40',
119
- notes: 'Travelling with a cello.',
120
- });
121
- const code = booked.structured.booking.confirmationCode;
122
- await call(t.listBookings, {});
123
- await call(t.previewChange, { booking: code, checkIn: '2026-10-26', checkOut: '2026-10-29' });
124
- await call(t.changeBooking, {
125
- booking: code,
126
- checkIn: '2026-10-26',
127
- checkOut: '2026-10-29',
128
- confirmed: true,
129
- });
130
- await call(t.previewCancellation, { booking: code });
131
- await call(t.cancelBooking, { booking: code, confirmed: true });
132
- await call(t.previewCancellation, { booking: 'SL-NOPE00' });
133
- await call(t.policies, { hotel: 'hong-kong-island' });
134
- await call(t.policies, { hotel: 'hong-kong-island', topic: 'cancellation' });
135
- await call(t.signIn, { number: 'SLC-4471-8820', surname: 'Ruan' });
136
- await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY });
137
- await call(t.signOut, {});
138
- await call(t.clearTrip, {});
139
- return out;
140
- };
141
- describe('every sentence the model is handed', () => {
142
- it('tells nobody to tap, click or swipe anything', async () => {
143
- for (const { name, args, text } of await run()) {
144
- expect(text.match(DEVICE)?.[0], `${name} ${JSON.stringify(args)}: ${text}`).toBeUndefined();
145
- }
146
- });
147
- it('names no position in a layout that has not been drawn yet', async () => {
148
- for (const { name, args, text } of await run()) {
149
- expect(text.match(POSITION)?.[0], `${name} ${JSON.stringify(args)}: ${text}`).toBeUndefined();
150
- }
151
- });
152
- // A sentence with a price in it is the one a guest acts on, so it says WHICH
153
- // thing costs that - by name, or by date.
154
- it('never leaves a price without something named beside it', async () => {
155
- for (const { name, args, text } of await run()) {
156
- for (const line of text.split('\n')) {
157
- if (!/[A-Z]{0,2}[$¥£€]|HK\$|CN¥/.test(line))
158
- continue;
159
- expect(/[A-Z][\w'-]+|\d{4}-\d{2}-\d{2}|room|night|stay|total|Total|ceiling/.test(line), `${name} ${JSON.stringify(args)}: ${line}`).toBe(true);
160
- }
161
- }
162
- });
163
- it('answers something for every one of them', async () => {
164
- const answers = await run();
165
- expect(answers.length).toBeGreaterThan(30);
166
- for (const { name, args, text } of answers) {
167
- expect(text.trim(), `${name} ${JSON.stringify(args)} answered with nothing`).not.toBe('');
168
- }
169
- });
170
- });
171
- //# sourceMappingURL=prose.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prose.test.js","sourceRoot":"","sources":["../../src/__tests__/prose.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=server.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/server.test.ts"],"names":[],"mappings":""}