@curless/hotel-storefront 0.27.7 → 0.27.9

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 (76) hide show
  1. package/README.md +1 -1
  2. package/dist/aggregate/hotels.d.ts +45 -0
  3. package/dist/aggregate/hotels.d.ts.map +1 -0
  4. package/dist/aggregate/hotels.js +633 -0
  5. package/dist/aggregate/hotels.js.map +1 -0
  6. package/dist/aggregate/ids.d.ts +36 -0
  7. package/dist/aggregate/ids.d.ts.map +1 -0
  8. package/dist/aggregate/ids.js +64 -0
  9. package/dist/aggregate/ids.js.map +1 -0
  10. package/dist/aggregate/make.d.ts +12 -0
  11. package/dist/aggregate/make.d.ts.map +1 -0
  12. package/dist/aggregate/make.js +96 -0
  13. package/dist/aggregate/make.js.map +1 -0
  14. package/dist/aggregate/paging.d.ts +35 -0
  15. package/dist/aggregate/paging.d.ts.map +1 -0
  16. package/dist/aggregate/paging.js +94 -0
  17. package/dist/aggregate/paging.js.map +1 -0
  18. package/dist/backend.d.ts +41 -0
  19. package/dist/backend.d.ts.map +1 -1
  20. package/dist/backend.js.map +1 -1
  21. package/dist/card.generated.d.ts +2 -2
  22. package/dist/card.generated.d.ts.map +1 -1
  23. package/dist/card.generated.js +3 -3
  24. package/dist/card.generated.js.map +1 -1
  25. package/dist/config.d.ts +31 -2
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js.map +1 -1
  28. package/dist/demo-hotels.d.ts +6 -0
  29. package/dist/demo-hotels.d.ts.map +1 -1
  30. package/dist/demo-hotels.js +16 -6
  31. package/dist/demo-hotels.js.map +1 -1
  32. package/dist/huazhu/backend.d.ts.map +1 -1
  33. package/dist/huazhu/backend.js +2 -0
  34. package/dist/huazhu/backend.js.map +1 -1
  35. package/dist/huazhu/make.d.ts +4 -0
  36. package/dist/huazhu/make.d.ts.map +1 -0
  37. package/dist/huazhu/make.js +105 -0
  38. package/dist/huazhu/make.js.map +1 -0
  39. package/dist/index.js +0 -0
  40. package/dist/legal.d.ts.map +1 -1
  41. package/dist/legal.js +136 -51
  42. package/dist/legal.js.map +1 -1
  43. package/dist/lib.d.ts +2 -1
  44. package/dist/lib.d.ts.map +1 -1
  45. package/dist/lib.js +2 -0
  46. package/dist/lib.js.map +1 -1
  47. package/dist/listing.d.ts +10 -0
  48. package/dist/listing.d.ts.map +1 -0
  49. package/dist/listing.js +43 -0
  50. package/dist/listing.js.map +1 -0
  51. package/dist/server.d.ts +10 -22
  52. package/dist/server.d.ts.map +1 -1
  53. package/dist/server.js +40 -153
  54. package/dist/server.js.map +1 -1
  55. package/dist/state.d.ts +8 -0
  56. package/dist/state.d.ts.map +1 -1
  57. package/dist/state.js +18 -1
  58. package/dist/state.js.map +1 -1
  59. package/dist/supplier.d.ts +50 -0
  60. package/dist/supplier.d.ts.map +1 -0
  61. package/dist/supplier.js +57 -0
  62. package/dist/supplier.js.map +1 -0
  63. package/dist/surface.d.ts.map +1 -1
  64. package/dist/surface.js +37 -21
  65. package/dist/surface.js.map +1 -1
  66. package/dist/tools.d.ts +29 -23
  67. package/dist/tools.d.ts.map +1 -1
  68. package/dist/tools.js +208 -69
  69. package/dist/tools.js.map +1 -1
  70. package/dist/types.d.ts +19 -0
  71. package/dist/types.d.ts.map +1 -1
  72. package/dist/vocab.d.ts +20 -0
  73. package/dist/vocab.d.ts.map +1 -1
  74. package/dist/vocab.js +22 -1
  75. package/dist/vocab.js.map +1 -1
  76. package/package.json +12 -10
package/dist/legal.js CHANGED
@@ -41,16 +41,45 @@ const footer = (config) => {
41
41
  * that says who holds a booking asks this, never `data.source` alone - an api
42
42
  * source can be the simulation.
43
43
  */
44
- const sourceOf = (c) => c.data.source !== 'api' ? 'demo' : c.data.api?.sandbox ? 'sandbox' : 'live';
44
+ const sourceOf = (c) => c.data.source === 'aggregate'
45
+ ? groupsOf(c).every((g) => g.source !== 'live')
46
+ ? 'demo'
47
+ : 'live'
48
+ : dataSource(c.data);
49
+ const dataSource = (d) => d.source !== 'api' ? 'demo' : d.api?.sandbox ? 'sandbox' : 'live';
50
+ /**
51
+ * A market's groups, and where each one's rooms come from - or none, on a
52
+ * group's own connector.
53
+ *
54
+ * ⚠️ IN A MARKET THE PAGES SPEAK OF EACH GROUP, NEVER OF THE MARKET AS A
55
+ * HOTELIER. Who holds a booking, where a guest's name goes and whose marks
56
+ * these are differ from group to group; said once for the market, one of them
57
+ * is wrong (robin, 2026-10-07).
58
+ */
59
+ const groupsOf = (c) => c.data.source === 'aggregate'
60
+ ? (c.data.suppliers ?? []).map((x) => ({ name: x.name, source: dataSource(x.data) }))
61
+ : [];
62
+ const andOf = (xs) => xs.length < 2 ? (xs[0] ?? '') : `${xs.slice(0, -1).join(', ')} and ${xs[xs.length - 1]}`;
63
+ /** One line per group, saying what `say` says about it. */
64
+ const perGroup = (c, say) => `<ul>${groupsOf(c)
65
+ .map((g) => `<li><strong>${esc(g.name)}</strong> — ${say(g)}</li>`)
66
+ .join('')}</ul>`;
45
67
  /** Said on every page, first, unless the rooms are the group's own. */
46
- const demoBanner = (config) => sourceOf(config) === 'live'
47
- ? ''
48
- : sourceOf(config) === 'sandbox'
49
- ? `<p><strong>This is a test environment.</strong> It answers from a simulated copy of
68
+ const demoBanner = (config) => config.data.source === 'aggregate'
69
+ ? sourceOf(config) === 'live'
70
+ ? ''
71
+ : `<p><strong>This is a demonstration.</strong> Every hotel group here is a demonstration or a
72
+ simulated copy of its booking system: the properties may be real, but every rate, room count,
73
+ add-on price and cancellation fee was made up. Nothing booked through it reserves a real room,
74
+ and no money changes hands.</p>`
75
+ : sourceOf(config) === 'live'
76
+ ? ''
77
+ : sourceOf(config) === 'sandbox'
78
+ ? `<p><strong>This is a test environment.</strong> It answers from a simulated copy of
50
79
  ${esc(config.brand)}'s booking system, not from ${esc(config.brand)}: the hotels, rates, rooms and fees
51
80
  were invented for testing, and nothing booked through it is a ${esc(config.brand)} reservation.
52
81
  No room is held and no money changes hands.</p>`
53
- : `<p><strong>This is a demonstration.</strong> The ${esc(config.brand)} properties named here are real, but
82
+ : `<p><strong>This is a demonstration.</strong> The ${esc(config.brand)} properties named here are real, but
54
83
  every rate, room count, add-on price and cancellation fee it answers with was made up for the demo.
55
84
  Nothing booked through it reserves a real room, and no money changes hands.</p>`;
56
85
  /**
@@ -61,30 +90,57 @@ const demoBanner = (config) => sourceOf(config) === 'live'
61
90
  * that say what this connector is are where that belongs - not in a comment in
62
91
  * a data file. `operator` is who built it; the brand is not them.
63
92
  */
64
- const marksNotice = (config) => sourceOf(config) === 'sandbox'
65
- ? `<h2>Names</h2>
93
+ const marksNotice = (config) => config.data.source === 'aggregate'
94
+ ? `<h2>Names and pictures</h2>
95
+ <p>${esc(andOf(groupsOf(config).map((g) => g.name)))}, the names of their brands and properties and the
96
+ photographs shown on the card belong to those groups. ${esc(config.brand)} shows their ${esc(config.naming?.nounPlural ?? 'hotels')} side by side; it is operated by ${esc(config.legal.operator ?? 'Curless')}, is none of them, and
97
+ does not speak for any of them.</p>`
98
+ : sourceOf(config) === 'sandbox'
99
+ ? `<h2>Names</h2>
66
100
  <p>${esc(config.brand)} and the names of its brands belong to ${esc(config.brand)}. They are used here to
67
101
  test a booking connector for ${esc(config.brand)} against a simulated copy of its distribution system,
68
102
  before it is connected to the real one; the hotels shown are invented. This connector is operated by
69
103
  ${esc(config.legal.operator ?? 'Curless')}; it is not ${esc(config.brand)} and does not speak for it.</p>`
70
- : sourceOf(config) === 'live'
71
- ? `<h2>Names and pictures</h2>
104
+ : sourceOf(config) === 'live'
105
+ ? `<h2>Names and pictures</h2>
72
106
  <p>${esc(config.brand)}, the names of its properties and the photographs shown on the card belong to
73
107
  ${esc(config.brand)}, and come from its own distribution system. This connector is operated by
74
108
  ${esc(config.legal.operator ?? 'Curless')}, which sells ${esc(config.brand)}'s rooms as a distributor;
75
109
  it is not ${esc(config.brand)}.</p>`
76
- : `<h2>Names and pictures</h2>
110
+ : `<h2>Names and pictures</h2>
77
111
  <p>${esc(config.brand)}, the names of its properties and the photographs shown on the card belong to
78
112
  ${esc(config.brand)}. They are used here to demonstrate a booking connector against the group's real
79
113
  property list. This connector is operated by ${esc(config.legal.operator ?? 'Curless')} and is not
80
114
  ${esc(config.brand)}, not affiliated with it, and not endorsed by it.</p>`;
81
- export const docsPage = (config, caps = FULL_CAPABILITIES) => shell('What this connector does', config.brand, `<h1>${esc(config.brand)} ${esc(config.naming?.nounPlural ?? 'hotels')}</h1>
115
+ export const docsPage = (config, caps = FULL_CAPABILITIES) => shell('What this connector does', config.brand, config.data.source === 'aggregate'
116
+ ? `<h1>${esc(config.naming?.nounPlural ?? 'hotels').replace(/^./, (x) => x.toUpperCase())} on ${esc(config.brand)}</h1>
117
+ <p>An MCP connector that lets an AI assistant look up the properties of ${esc(andOf(groupsOf(config).map((g) => g.name)))} in one place, price a stay on given nights, put ${caps.extras ? 'rooms and add-ons' : 'rooms'} into a
118
+ trip, and book them with the group each property belongs to, one group at a time.
119
+ ${esc(config.brand)} holds no booking itself.</p>
120
+ ${demoBanner(config)}
121
+ <h2>Who a booking is with</h2>
122
+ ${perGroup(config, (g) => g.source === 'sandbox'
123
+ ? `a booking in a simulated copy of ${esc(g.name)}'s booking system, for testing: a confirmation code there, no room, nothing paid.`
124
+ : g.source === 'demo'
125
+ ? `a demonstration booking request: a confirmation code is issued, but ${esc(g.name)} does not receive it and no room is held.`
126
+ : `${esc(g.name)}'s own booking, made in its system under its terms; this connector takes no payment.`)}
127
+ <h2>What it will not do</h2>
128
+ <ul>
129
+ <li><strong>Take payment.</strong> This connector collects no card details and charges nothing.</li>
130
+ <li><strong>Guess dates.</strong> No nights, no prices — it asks instead.</li>
131
+ <li><strong>Choose a group for you.</strong> A city's ${esc(config.naming?.nounPlural ?? 'hotels')} from every group are listed side by side.</li>
132
+ </ul>
133
+ ${footer(config)}`
134
+ : `<h1>${esc(config.brand)} ${esc(config.naming?.nounPlural ?? 'hotels')}</h1>
82
135
  <p>An MCP connector that lets an AI assistant look up ${esc(config.brand)} properties, price a stay on
83
136
  given nights, put ${caps.extras ? 'rooms and add-ons' : 'rooms'} into a trip, and ${sourceOf(config) === 'sandbox'
84
- ? 'book those rooms in a simulated copy of its system, for testing'
85
- : caps.booking === 'pay-at-hotel'
86
- ? 'book those rooms, to be paid at the hotel'
87
- : 'ask for those rooms to be held'}.</p>
137
+ ? 'book those rooms in a simulated copy of its system, for testing'
138
+ : caps.booking === 'pay-at-hotel'
139
+ ? 'book those rooms, to be paid at the hotel'
140
+ : sourceOf(config) === 'demo'
141
+ ? // The list below says nothing is held - this line said "held" (2026-10-05 audit, P3).
142
+ 'make a demonstration booking request for them - nothing is held and nothing is paid'
143
+ : 'ask for those rooms to be held'}.</p>
88
144
  ${demoBanner(config)}
89
145
  <h2>What it can do</h2>
90
146
  <ul>
@@ -93,28 +149,28 @@ export const docsPage = (config, caps = FULL_CAPABILITIES) => shell('What this c
93
149
  the cancellation terms, and how many rooms are left.</li>
94
150
  <li>Build a trip of room nights${caps.extras ? ' and add-ons' : ''}, and price it.</li>
95
151
  <li>${sourceOf(config) === 'sandbox'
96
- ? 'Book: each stay becomes a reservation in the simulated system, with its own confirmation code.'
97
- : caps.booking === 'pay-at-hotel'
98
- ? `Book: each stay becomes ${esc(config.brand)}'s own reservation, with its own confirmation code, paid at the hotel.`
99
- : sourceOf(config) === 'demo'
100
- ? `Request a demonstration booking: a confirmation code is issued, but ${esc(config.brand)} does not receive it and no room is held.`
101
- : 'Request a booking: the rooms are held and a confirmation code is issued.'}</li>
152
+ ? 'Book: each stay becomes a reservation in the simulated system, with its own confirmation code.'
153
+ : caps.booking === 'pay-at-hotel'
154
+ ? `Book: each stay becomes ${esc(config.brand)}'s own reservation, with its own confirmation code, paid at the hotel.`
155
+ : sourceOf(config) === 'demo'
156
+ ? `Request a demonstration booking: a confirmation code is issued, but ${esc(config.brand)} does not receive it and no room is held.`
157
+ : 'Request a booking: the rooms are held and a confirmation code is issued.'}</li>
102
158
  <li>Show what cancelling would cost before anything is cancelled, then cancel.</li>
103
159
  ${caps.policies === false ? '' : "<li>Answer from the property's own published policies.</li>"}
104
160
  </ul>
105
161
  <h2>What it will not do</h2>
106
162
  <ul>
107
163
  <li><strong>${config.payment?.mode === 'wallet' ? 'Charge without the guest acting' : 'Take payment'}.</strong> ${config.payment?.mode === 'wallet'
108
- ? 'A charge follows the guest pressing pay, never an assistant deciding to.'
109
- : sourceOf(config) === 'sandbox'
110
- ? 'This connector collects no card details and charges nothing, and in this test environment nothing is paid anywhere.'
111
- : sourceOf(config) === 'demo'
112
- ? 'This connector collects no card details and charges nothing, and a demonstration booking is never paid anywhere.'
113
- : 'This connector collects no card details and charges nothing. A card is presented at check-in.'}</li>
164
+ ? 'A charge follows the guest pressing pay, never an assistant deciding to.'
165
+ : sourceOf(config) === 'sandbox'
166
+ ? 'This connector collects no card details and charges nothing, and in this test environment nothing is paid anywhere.'
167
+ : sourceOf(config) === 'demo'
168
+ ? 'This connector collects no card details and charges nothing, and a demonstration booking is never paid anywhere.'
169
+ : 'This connector collects no card details and charges nothing. A card is presented at check-in.'}</li>
114
170
  <li><strong>Guess dates.</strong> No nights, no prices — it asks instead.</li>
115
171
  <li><strong>Invent availability or fees.</strong> ${caps.booking === 'pay-at-hotel'
116
- ? "Rooms left are what the booking system reports, and a cancellation fee is shown with the rate's own terms it came from."
117
- : 'A held room comes off the count, and a\n cancellation fee is shown with the rule it came from.'}</li>
172
+ ? "Rooms left are what the booking system reports, and a cancellation fee is shown with the rate's own terms it came from."
173
+ : 'A held room comes off the count, and a\n cancellation fee is shown with the rule it came from.'}</li>
118
174
  </ul>
119
175
  ${footer(config)}`);
120
176
  export const privacyPage = (config, imageHosts = [], caps = FULL_CAPABILITIES,
@@ -136,13 +192,21 @@ persisted = false) => shell('Privacy', config.brand, `<h1>Privacy</h1>
136
192
  <li><strong>A booking you request</strong> — the name and email you gave, ${caps.requiresPhone ? 'your phone number' : 'a phone number if you\n gave one'}, the room requests (a bed type, a floor, a quiet, connecting or accessible room, an
137
193
  early check-in or a late arrival), your arrival time and any note, the dates, rooms and price${sourceOf(config) === 'demo'
138
194
  ? ',\n and the reason if you give one for cancelling'
139
- : ''}. ${sourceOf(config) === 'sandbox'
140
- ? `In this test environment it is sent to a simulated copy of ${esc(config.brand)}'s system that ${esc(config.legal.operator ?? 'Curless')} runs on the same server - never to ${esc(config.brand)} - and both keep it until 90 days after the check-out date, so that the booking can be found and cancelled from the conversation.`
141
- : sourceOf(config) === 'live'
142
- ? `It is sent to ${esc(config.brand)}, who make and keep the reservation - the name, the email, the phone number, the dates, the rooms and the requests, which reach the hotel's desk. This connector also keeps a copy on its own server, until 90 days after the check-out date, so that the booking can be found and cancelled from the conversation: ${esc(config.brand)}'s system does not give back the email a booking was made with. A booking a person here has to confirm or cancel with ${esc(config.brand)} by hand is kept until 90 days after that is done, if that is later.`
143
- : persisted
144
- ? "In this demonstration it is kept on this connector's server until 90 days after the check-out date, so that the booking can be found and cancelled from the conversation, and then deleted."
145
- : 'In this demonstration it is kept in memory for as long as this process runs, and nothing is written to disk; once there are many, bookings that are over are forgotten first.'}</li>
195
+ : ''}. ${config.data.source === 'aggregate'
196
+ ? `Where it goes is the group's whose ${esc(config.naming?.noun ?? 'hotel')} it is:${perGroup(config, (g) => g.source === 'sandbox'
197
+ ? `sent to a simulated copy of ${esc(g.name)}'s system that ${esc(config.legal.operator ?? 'Curless')} runs on the same server - never to ${esc(g.name)} - and both keep it until 90 days after the check-out date.`
198
+ : g.source === 'live'
199
+ ? `sent to ${esc(g.name)}, who make and keep the reservation; this connector also keeps a copy on its own server until 90 days after the check-out date, so that the booking can be found and cancelled from the conversation.`
200
+ : persisted
201
+ ? `a demonstration: ${esc(g.name)} never receives it. It is kept on this connector's server until 90 days after the check-out date, and then deleted.`
202
+ : `a demonstration: ${esc(g.name)} never receives it. It is kept in memory for as long as this process runs, and nothing is written to disk.`)}`
203
+ : sourceOf(config) === 'sandbox'
204
+ ? `In this test environment it is sent to a simulated copy of ${esc(config.brand)}'s system that ${esc(config.legal.operator ?? 'Curless')} runs on the same server - never to ${esc(config.brand)} - and both keep it until 90 days after the check-out date, so that the booking can be found and cancelled from the conversation.`
205
+ : sourceOf(config) === 'live'
206
+ ? `It is sent to ${esc(config.brand)}, who make and keep the reservation - the name, the email, the phone number, the dates, the rooms and the requests, which reach the hotel's desk. This connector also keeps a copy on its own server, until 90 days after the check-out date, so that the booking can be found and cancelled from the conversation: ${esc(config.brand)}'s system does not give back the email a booking was made with. A booking a person here has to confirm or cancel with ${esc(config.brand)} by hand is kept until 90 days after that is done, if that is later.`
207
+ : persisted
208
+ ? "In this demonstration it is kept on this connector's server until 90 days after the check-out date, so that the booking can be found and cancelled from the conversation, and then deleted."
209
+ : 'In this demonstration it is kept in memory for as long as this process runs, and nothing is written to disk; once there are many, bookings that are over are forgotten first.'}</li>
146
210
  <li><strong>Who can open a booking.</strong> The conversation it was made in — and anyone who
147
211
  gives its confirmation code together with the email it was made with, as a front desk would
148
212
  ask. That pair lets the booking be ${caps.changes ? 'read, changed or cancelled' : 'read or cancelled'}, from another conversation too,
@@ -168,7 +232,7 @@ persisted = false) => shell('Privacy', config.brand, `<h1>Privacy</h1>
168
232
  : 'In this demonstration it is kept in memory and does not survive a restart.'}</li>`
169
233
  : ''}
170
234
  <li><strong>Wrong guesses</strong> — a confirmation code and email${caps.members ? ', or a membership number and surname,' : ''} that did not match — counted for a quarter of an hour, so that neither pair can be
171
- guessed at. After a few, that kind of lookup waits.</li>${sourceOf(config) === 'demo'
235
+ guessed at. After a few, that kind of lookup waits.</li>${sourceOf(config) === 'demo' && groupsOf(config).every((g) => g.source === 'demo')
172
236
  ? ''
173
237
  : `
174
238
  <li><strong>Booking limits</strong> — so that nobody can fill hotels with bookings under made-up names, the
@@ -197,7 +261,7 @@ persisted = false) => shell('Privacy', config.brand, `<h1>Privacy</h1>
197
261
  <p>They reach this connector only when you type them into the booking form or say them in the
198
262
  conversation. The assistant is told not to fill them in from an account or profile, and the
199
263
  connector has no way to read either.</p>
200
- ${config.legal.brandContact
264
+ ${config.legal.brandContact && config.data.source !== 'aggregate'
201
265
  ? `<h2>The hotel group</h2><p>Questions about a real booking go to ${esc(config.brand)} at
202
266
  <a href="mailto:${esc(config.legal.brandContact)}">${esc(config.legal.brandContact)}</a>.</p>`
203
267
  : ''}
@@ -207,19 +271,40 @@ export const termsPage = (config, caps = FULL_CAPABILITIES) => shell('Terms', co
207
271
  ${demoBanner(config)}
208
272
  <h2>What this is</h2>
209
273
  <p>A connector operated by ${esc(config.legal.operator ?? 'Curless')} that an AI assistant uses on
210
- your behalf. ${sourceOf(config) === 'sandbox'
211
- ? 'The hotels, rates and availability it shows come from a simulated booking system, for testing, and do not reserve anything.'
212
- : sourceOf(config) === 'live'
213
- ? `The rooms, rates and policies come from ${esc(config.brand)}; the booking is between you and them.`
214
- : 'The rates and availability it shows are demonstration values and do not reserve anything.'}</p>
274
+ your behalf. ${config.data.source === 'aggregate'
275
+ ? `It shows the ${esc(config.naming?.nounPlural ?? 'hotels')} of several groups side by side; ${esc(config.brand)} is not a hotel and holds no booking. ${sourceOf(config) === 'live'
276
+ ? "Each group's rooms, rates and policies come from that group, and a booking is between you and it."
277
+ : 'The rates, availability, fees, descriptions and policies it shows come from demonstration files and simulated booking systems, and do not reserve anything.'}`
278
+ : sourceOf(config) === 'sandbox'
279
+ ? 'The hotels, rates and availability it shows come from a simulated booking system, for testing, and do not reserve anything.'
280
+ : sourceOf(config) === 'live'
281
+ ? `The rooms, rates and policies come from ${esc(config.brand)}; the booking is between you and them.`
282
+ : // Said as the fence around a policy says it - written for the demo,
283
+ // not the hotel's own words (2026-10-05 audit, P3).
284
+ 'The rates, availability, fees, descriptions and policies it shows were written for this demonstration and do not reserve anything.'}</p>
215
285
  <h2>Bookings</h2>
216
- <p>${sourceOf(config) === 'sandbox'
217
- ? `In this test environment a booking is made in a simulated copy of ${esc(config.brand)}'s system: it reserves no room, and nothing is paid.`
218
- : config.payment?.mode === 'wallet'
219
- ? 'A booking is confirmed once payment completes. Until then the rooms are held only.'
220
- : caps.booking === 'pay-at-hotel'
221
- ? `A booking is ${esc(config.brand)}'s own reservation, made in your name and paid at the hotel under its terms; this connector takes no payment. A booking whose confirmation has not come back from ${esc(config.brand)} is said to be waiting until it has.`
222
- : 'A booking request holds rooms; it takes no payment and is not a confirmed reservation. The hold lapses at the time stated on the confirmation.'} ${sourceOf(config) === 'sandbox' ? 'Cancellation terms are the simulated rate’s, and are' : "Cancellation terms are the property's own, and are"} shown in full before anything is cancelled.</p>
286
+ ${config.data.source === 'aggregate'
287
+ ? `<p>A booking is made with the group the ${esc(config.naming?.noun ?? 'hotel')} belongs to, one group at a time, under that group's terms; this connector takes no payment.</p>
288
+ ${perGroup(config, (g) => g.source === 'sandbox'
289
+ ? `made in a simulated copy of ${esc(g.name)}'s system: it reserves no room, and nothing is paid. Its cancellation terms are the simulated rate's.`
290
+ : g.source === 'demo'
291
+ ? `a demonstration, not a confirmed reservation: ${esc(g.name)} does not receive it, no real room is held, and nothing is paid. Its demonstration hold lapses at the time stated on the confirmation, and its cancellation terms were written for this demonstration.`
292
+ : `${esc(g.name)}'s own booking, under its terms. Its cancellation terms are the property's own.`)}
293
+ <p>Cancellation terms are shown in full before anything is cancelled.</p>`
294
+ : `<p>${sourceOf(config) === 'sandbox'
295
+ ? `In this test environment a booking is made in a simulated copy of ${esc(config.brand)}'s system: it reserves no room, and nothing is paid.`
296
+ : config.payment?.mode === 'wallet'
297
+ ? 'A booking is confirmed once payment completes. Until then the rooms are held only.'
298
+ : caps.booking === 'pay-at-hotel'
299
+ ? `A booking is ${esc(config.brand)}'s own reservation, made in your name and paid at the hotel under its terms; this connector takes no payment. A booking whose confirmation has not come back from ${esc(config.brand)} is said to be waiting until it has.`
300
+ : sourceOf(config) === 'demo'
301
+ ? `A booking request here is a demonstration and is not a confirmed reservation: ${esc(config.brand)} does not receive it, no real room is held, and nothing is paid. Its demonstration hold lapses at the time stated on the confirmation.`
302
+ : 'A booking request holds rooms; it takes no payment and is not a confirmed reservation. The hold lapses at the time stated on the confirmation.'} ${sourceOf(config) === 'sandbox'
303
+ ? 'Cancellation terms are the simulated rate’s, and are'
304
+ : sourceOf(config) === 'demo'
305
+ ? // Written for the demo like everything else here - not the property's (2026-10-05 audit, P3).
306
+ 'Cancellation terms were written for this demonstration, and are'
307
+ : "Cancellation terms are the property's own, and are"} shown in full before anything is cancelled.</p>`}
223
308
  <h2>No warranty</h2>
224
309
  <p>This connector is provided as is. ${sourceOf(config) === 'live'
225
310
  ? 'Rates and availability can change between a quote and a booking.'
package/dist/legal.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"legal.js","sourceRoot":"","sources":["../src/legal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"legal.js","sourceRoot":"","sources":["../src/legal.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts CHANGED
@@ -17,9 +17,10 @@ export { loadConfig, buildServer, widgetMeta, imageDomainsOf, CARD_URI, CARD_MIM
17
17
  export { createDemoHotels } from './demo-hotels.js';
18
18
  export { toolNames } from './config.js';
19
19
  export { buildTools, withheldTools } from './tools.js';
20
+ export { INSTRUCTS, listingProblems } from './listing.js';
20
21
  export { resolveBrand, DEMO_NOTE } from './vocab.js';
21
22
  export { FULL_CAPABILITIES, MAX_PAGE } from './backend.js';
22
- export type { BackendCapabilities, HotelBackend } from './backend.js';
23
+ export type { BackendCapabilities, HotelBackend, SupplierInfo } from './backend.js';
23
24
  export type { ApiSource, HotelConfig, ToolNames } from './config.js';
24
25
  export { HUAZHU_CAPABILITIES, createHuazhuHotels } from './huazhu/backend.js';
25
26
  export { checkHuazhu } from './huazhu/check.js';
package/dist/lib.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,QAAQ,EACR,SAAS,EACT,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACtE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EACV,OAAO,EACP,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,QAAQ,GACT,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,QAAQ,EACR,SAAS,EACT,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACpF,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC5D,YAAY,EACV,OAAO,EACP,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,QAAQ,GACT,MAAM,YAAY,CAAC"}
package/dist/lib.js CHANGED
@@ -18,6 +18,8 @@ export { createDemoHotels } from './demo-hotels.js';
18
18
  export { toolNames } from './config.js';
19
19
  // What a deployment offers, for a brand repository checking its own config.
20
20
  export { buildTools, withheldTools } from './tools.js';
21
+ // The directories' attestation about tool descriptions, run on a real config.
22
+ export { INSTRUCTS, listingProblems } from './listing.js';
21
23
  export { resolveBrand, DEMO_NOTE } from './vocab.js';
22
24
  export { FULL_CAPABILITIES, MAX_PAGE } from './backend.js';
23
25
  // A group's own booking system, for a brand repository's own checks.
package/dist/lib.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,QAAQ,EACR,SAAS,EACT,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,4EAA4E;AAC5E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG3D,qEAAqE;AACrE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EACL,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,QAAQ,EACR,SAAS,EACT,OAAO,GACR,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,4EAA4E;AAC5E,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvD,8EAA8E;AAC9E,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG3D,qEAAqE;AACrE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { BackendCapabilities } from './backend.js';
2
+ import type { HotelConfig } from './config.js';
3
+ /**
4
+ * Imperatives addressed to the model. Not every "do" is one - these are the
5
+ * shapes such a description actually reaches for.
6
+ */
7
+ export declare const INSTRUCTS: RegExp;
8
+ /** What in this deployment's tool list breaks the attestation - nothing, when it is clean. */
9
+ export declare const listingProblems: (config: HotelConfig, caps?: BackendCapabilities) => string[];
10
+ //# sourceMappingURL=listing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listing.d.ts","sourceRoot":"","sources":["../src/listing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAc/C;;;GAGG;AACH,eAAO,MAAM,SAAS,QAC4J,CAAC;AAInL,8FAA8F;AAC9F,eAAO,MAAM,eAAe,GAAI,QAAQ,WAAW,EAAE,OAAO,mBAAmB,KAAG,MAAM,EAqBvF,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { buildTools } from './tools.js';
2
+ import { resolveBrand } from './vocab.js';
3
+ // What both assistant directories have us attest about a deployment's tools,
4
+ // checked against a REAL config - exported, so a brand's own repository can
5
+ // run it on the config it ships.
6
+ //
7
+ // ⚠️ A BRAND'S HINTS ARE SPLICED INTO THE TOOL DESCRIPTIONS. The rule - "tool
8
+ // descriptions contain no instructions about model behavior or other tools" -
9
+ // was only ever checked against this package's fixtures, so a brand that put
10
+ // "always ask the guest's dates first" into `hints.search` would have shipped
11
+ // an instruction in a description with every test green (2026-10-05 audit, P3).
12
+ /**
13
+ * Imperatives addressed to the model. Not every "do" is one - these are the
14
+ * shapes such a description actually reaches for.
15
+ */
16
+ export const INSTRUCTS = /\b(call this|call it|do not|don't|never|always|instead of|rather than|you must|you should|make sure|ask the guest|ask them|before (?:booking|cancelling|calling))\b|\bFIRST\b/i;
17
+ const HINTS = ['readOnlyHint', 'destructiveHint', 'idempotentHint', 'openWorldHint'];
18
+ /** What in this deployment's tool list breaks the attestation - nothing, when it is clean. */
19
+ export const listingProblems = (config, caps) => {
20
+ const brand = resolveBrand(config);
21
+ const tools = buildTools(brand.tools, brand.vocab, caps);
22
+ const names = Object.values(brand.tools);
23
+ const out = [];
24
+ for (const t of tools) {
25
+ const params = Object.values(t.inputSchema.properties ?? {}).map((p) => p.description ?? '');
26
+ const said = t.description.concat(' ', params.join(' ')).match(INSTRUCTS)?.[0];
27
+ if (said)
28
+ out.push(`${t.name}: "${said}" reads as an instruction to the model`);
29
+ for (const other of names) {
30
+ if (other !== t.name && t.description.includes(other))
31
+ out.push(`${t.name} names ${other}`);
32
+ }
33
+ const a = t.annotations;
34
+ if (typeof a.title !== 'string')
35
+ out.push(`${t.name} has no title`);
36
+ for (const hint of HINTS) {
37
+ if (typeof a[hint] !== 'boolean')
38
+ out.push(`${t.name} does not state ${hint}`);
39
+ }
40
+ }
41
+ return out;
42
+ };
43
+ //# sourceMappingURL=listing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listing.js","sourceRoot":"","sources":["../src/listing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,6EAA6E;AAC7E,4EAA4E;AAC5E,iCAAiC;AACjC,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GACpB,gLAAgL,CAAC;AAEnL,MAAM,KAAK,GAAG,CAAC,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,CAAU,CAAC;AAE9F,8FAA8F;AAC9F,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAmB,EAAE,IAA0B,EAAY,EAAE;IAC3F,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CACzB,CAAC,CAAC,WAAyE,CAAC,UAAU,IAAI,EAAE,CAC9F,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/E,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM,IAAI,wCAAwC,CAAC,CAAC;QAChF,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,KAAK,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,WAAsC,CAAC;QACnD,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,mBAAmB,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC"}
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.27.7";
31
+ export declare const VERSION = "0.27.9";
32
32
  /**
33
33
  * The card's resource URI.
34
34
  *
@@ -37,7 +37,7 @@ export declare const VERSION = "0.27.7";
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-v49.html";
40
+ export declare const CARD_URI = "ui://curless/hotel/booking-v51.html";
41
41
  /**
42
42
  * ⚠️ `text/html;profile=mcp-app`, not `text/html+skybridge`. The MIME is how a
43
43
  * host recognises this resource as a card at all; the plausible near-miss made
@@ -53,10 +53,10 @@ export declare const CARD_MIME = "text/html;profile=mcp-app";
53
53
  */
54
54
  export declare const UI_META: {
55
55
  readonly ui: {
56
- readonly resourceUri: "ui://curless/hotel/booking-v49.html";
56
+ readonly resourceUri: "ui://curless/hotel/booking-v51.html";
57
57
  };
58
- readonly 'ui/resourceUri': "ui://curless/hotel/booking-v49.html";
59
- readonly 'openai/outputTemplate': "ui://curless/hotel/booking-v49.html";
58
+ readonly 'ui/resourceUri': "ui://curless/hotel/booking-v51.html";
59
+ readonly 'openai/outputTemplate': "ui://curless/hotel/booking-v51.html";
60
60
  readonly 'openai/widgetAccessible': true;
61
61
  };
62
62
  /**
@@ -68,21 +68,21 @@ export declare const UI_META: {
68
68
  * only ChatGPT's key. The card draws its own plate when a hotel has no picture,
69
69
  * so a missing host here is not an error anywhere - it is ninety-six tiles of
70
70
  * coloured initials and no clue why. Derived from the data, hotels and rooms
71
- * alike, by imageDomainsOf() below.
71
+ * alike, by imageDomainsOf() (supplier.ts).
72
72
  */
73
73
  export declare const widgetMeta: (imageDomains: string[]) => {
74
74
  ui: {
75
75
  csp: {
76
76
  resourceDomains: string[];
77
77
  };
78
- resourceUri: "ui://curless/hotel/booking-v49.html";
78
+ resourceUri: "ui://curless/hotel/booking-v51.html";
79
79
  };
80
80
  'openai/widgetCSP': {
81
81
  connect_domains: never[];
82
82
  resource_domains: string[];
83
83
  };
84
- 'ui/resourceUri': "ui://curless/hotel/booking-v49.html";
85
- 'openai/outputTemplate': "ui://curless/hotel/booking-v49.html";
84
+ 'ui/resourceUri': "ui://curless/hotel/booking-v51.html";
85
+ 'openai/outputTemplate': "ui://curless/hotel/booking-v51.html";
86
86
  'openai/widgetAccessible': true;
87
87
  };
88
88
  /** The trip snapshot that rides beside every answer, for the card's header. */
@@ -123,20 +123,8 @@ export type ServerOptions = {
123
123
  */
124
124
  background?: boolean;
125
125
  };
126
+ export { imageDomainsOf } from './supplier.js';
126
127
  export declare const buildServer: (opts: ServerOptions) => BuiltServer;
127
- /**
128
- * Every origin the card will try to load a picture from.
129
- *
130
- * Rooms have photographs too, and a room photograph served from a host the
131
- * hotel's own is not would be blocked by a CSP built from the hotels alone -
132
- * one blank thumbnail per room, with nothing in any log to say why.
133
- */
134
- export declare const imageDomainsOf: (hotels: {
135
- imageUrl?: string;
136
- rooms: {
137
- imageUrl?: string;
138
- }[];
139
- }[]) => string[];
140
128
  /**
141
129
  * The client's address, from the header the edge proxy sets.
142
130
  *
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,IAAI,EAAE,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAU/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EACL,KAAK,QAAQ,EAOd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAW,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,YAAY,CAAC;AAS9D,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAc,CAAC;AAC1C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,wCAAwC,CAAC;AAC9D;;;;;GAKG;AACH,eAAO,MAAM,SAAS,8BAA8B,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,OAAO;;;;;;;CAKV,CAAC;AAEX;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GAAI,cAAc,MAAM,EAAE;;;;;;;;;;;;;;CAI/C,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,IAAI,CAAC;IACV,yEAAyE;IACzE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;;;OAIG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAuKF,eAAO,MAAM,WAAW,GAAI,MAAM,aAAa,KAAG,WAqajD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,EAAE,KAC9D,MAAM,EAIR,CAAC;AAWF;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAG9D,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAGlF,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,IAAI,EAAE,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,OAAO,EACL,KAAK,QAAQ,EAOd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAW,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,YAAY,CAAC;AAS9D,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C;;;GAGG;AACH,eAAO,MAAM,cAAc,QAAc,CAAC;AAC1C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,wCAAwC,CAAC;AAC9D;;;;;GAKG;AACH,eAAO,MAAM,SAAS,8BAA8B,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,OAAO;;;;;;;CAKV,CAAC;AAEX;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GAAI,cAAc,MAAM,EAAE;;;;;;;;;;;;;;CAI/C,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,IAAI,CAAC;IACV,yEAAyE;IACzE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB;;;;OAIG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAoBF,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,eAAO,MAAM,WAAW,GAAI,MAAM,aAAa,KAAG,WAmcjD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAG9D,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAGlF,CAAC"}