@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/surface.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { FULL_CAPABILITIES } from './backend.js';
2
2
  import { FENCE_RULE } from './fence.js';
3
- import { DEMO_NOTE } from './vocab.js';
3
+ import { DEMO_NOTE, upFirst } from './vocab.js';
4
4
  // What a host is told about this connector: the `instructions` it injects into
5
5
  // the model's context, and the tool list with each tool's card metadata.
6
6
  //
@@ -10,6 +10,8 @@ import { DEMO_NOTE } from './vocab.js';
10
10
  // both directory listings attest that tool descriptions contain no instructions
11
11
  // about model behaviour. The shopping connector had to make that true after the
12
12
  // fact on 2026-09-17; this one starts here.
13
+ /** "Shangri-La and Huazhu", "A, B and C". */
14
+ const and = (xs) => xs.length < 2 ? (xs[0] ?? '') : `${xs.slice(0, -1).join(', ')} and ${xs[xs.length - 1]}`;
13
15
  /**
14
16
  * How to BEHAVE, not just what the tools are.
15
17
  *
@@ -23,6 +25,10 @@ import { DEMO_NOTE } from './vocab.js';
23
25
  export const buildInstructions = (brand, caps = FULL_CAPABILITIES) => {
24
26
  const { tools: t, vocab: v } = brand;
25
27
  const takesPayment = brand.config.payment?.mode === 'wallet';
28
+ // A market's groups, and the ones among them that are a simulation.
29
+ const suppliers = v.market ? (brand.config.data.suppliers ?? []) : [];
30
+ const groups = and(suppliers.map((x) => x.name));
31
+ const simulated = suppliers.filter((x) => x.data.source === 'api' && x.data.api?.sandbox);
26
32
  // ⚠️ NOTHING HERE NAMES A TOOL THIS DEPLOYMENT DOES NOT OFFER. A model told
27
33
  // about a sign-in that does not exist asks the guest for a membership number
28
34
  // and then has nowhere to put it.
@@ -30,18 +36,24 @@ export const buildInstructions = (brand, caps = FULL_CAPABILITIES) => {
30
36
  ? `${t.listHotels}, ${t.getHotel} and ${t.listExtras} each draw a card every time, so they are for a guest who asked to SEE a list, a ${v.noun} or its add-ons`
31
37
  : `${t.listHotels} and ${t.getHotel} each draw a card every time, so they are for a guest who asked to SEE a list or a ${v.noun}`;
32
38
  return [
33
- `${v.brand} ${v.nounPlural}. The card IS the booking surface: it shows the ${v.nounPlural} with pictures, rooms with their nightly rate and stay total, the trip and its total, and the booking itself.`,
39
+ `${v.market ? `${upFirst(v.nounPlural)} of several ${v.noun} groups, on ${v.brand}` : `${v.brand} ${v.nounPlural}`}. The card IS the booking surface: it shows the ${v.nounPlural} with pictures, rooms with their nightly rate and stay total, the trip and its total, and the booking itself.`,
34
40
  // ⚠️ NOT "OWN" ON THE SANDBOX: its properties, prices and terms are
35
41
  // invented (2026-10-05 audit, P2).
36
- v.sandbox
37
- ? `These tools read a simulated copy of ${v.brand}'s system, for testing: its properties, prices and cancellation terms are invented, not ${v.brand}'s.`
38
- : `These tools read ${v.brand}'s own ${v.noun} data: what each property offers, what a room costs on given nights, and what its cancellation terms are.`,
42
+ v.market
43
+ ? // ⚠️ THE MARKET HOLDS NOTHING. A booking is with the group whose hotel
44
+ // it is; "Otaless has your room" sends a guest to a desk that never
45
+ // heard of Otaless (robin, 2026-10-07).
46
+ `These tools read the ${v.nounPlural} of ${groups} through ${v.brand}: what each property offers, what a room costs on given nights, and what its cancellation terms are. ${v.brand} holds no booking itself - each one is with the group whose ${v.noun} it is, and every answer about a booking names that group. Never say ${v.brand} holds, receives or confirms a booking.`
47
+ : v.sandbox
48
+ ? `These tools read a simulated copy of ${v.brand}'s system, for testing: its properties, prices and cancellation terms are invented, not ${v.brand}'s.`
49
+ : `These tools read ${v.brand}'s own ${v.noun} data: what each property offers, what a room costs on given nights, and what its cancellation terms are.`,
39
50
  // Demonstration data is a fact about the answer, not a disclaimer to bury.
40
51
  ...(v.demo
41
52
  ? [
42
53
  `⚠️ ${DEMO_NOTE} Say so the first time you quote a price, and never imply a room can actually be occupied.`,
43
54
  ]
44
55
  : []),
56
+ ...simulated.map((x) => `⚠️ ${x.name}'s ${v.nounPlural}, rates and bookings here come from a simulated copy of ${x.name}'s booking system, not from ${x.name}: a booking with them made here is not a ${x.name} reservation, holds no real room and is paid by nobody. The answer says so for each such booking; say so whenever you report one.`),
45
57
  ...(v.sandbox
46
58
  ? [
47
59
  `⚠️ THIS IS A TEST ENVIRONMENT. The ${v.nounPlural}, rates and bookings come from a simulated copy of ${v.brand}'s booking system, not from ${v.brand}: a booking made here is not a ${v.brand} reservation, holds no real room and is paid by nobody. Say so whenever you report a booking.`,
@@ -65,21 +77,23 @@ export const buildInstructions = (brand, caps = FULL_CAPABILITIES) => {
65
77
  `${t.getHotel} with \`checkIn\` and \`checkOut\` gives the room types for those nights: nightly rate, the stay total including taxes and fees, whether it can be cancelled free and until when, and how many are left. Quote the stay total when comparing - a nightly rate hides the weekend and the tax.`,
66
78
  caps.extras
67
79
  ? `The card keeps a trip: room nights plus add-ons. ${t.addToTrip} and ${t.viewTrip} change and read it from the chat, and ${t.listExtras} shows what a ${v.noun} offers beside the room. To take a line out, set its \`rooms\` or \`quantity\` to 0; ${t.clearTrip} empties all of it, and only when the guest asks. To know what is in the trip, call ${t.viewTrip} rather than repeating it from memory - the guest may have changed it on the card.`
68
- : `The card keeps a trip of room nights. ${t.addToTrip} and ${t.viewTrip} change and read it from the chat; ${v.brand} sells rooms only here, with no add-ons. To take a line out, set its \`rooms\` to 0; ${t.clearTrip} empties all of it, and only when the guest asks. To know what is in the trip, call ${t.viewTrip} rather than repeating it from memory - the guest may have changed it on the card.`,
80
+ : `The card keeps a trip of room nights. ${t.addToTrip} and ${t.viewTrip} change and read it from the chat; ${v.market ? 'the groups here sell' : `${v.brand} sells`} rooms only here, with no add-ons. To take a line out, set its \`rooms\` to 0; ${t.clearTrip} empties all of it, and only when the guest asks. To know what is in the trip, call ${t.viewTrip} rather than repeating it from memory - the guest may have changed it on the card.`,
69
81
  ...(v.hints.hotel ? [v.hints.hotel] : []),
70
82
  // ⚠️ HELD IS NOT BOOKED AND NOT PAID.
71
83
  takesPayment
72
84
  ? `${t.requestBooking} holds the rooms; payment follows. Do not describe a held booking as paid.`
73
- : caps.booking === 'pay-at-hotel' && v.sandbox
74
- ? `${t.requestBooking} makes a TEST booking in the simulated system: report it as a test booking with its code, never as a reservation, and never tell the guest to pay anything or expect a room. IT TAKES NO MONEY AND COLLECTS NO CARD. Never ask for a card number, and never put one into any field.`
75
- : caps.booking === 'pay-at-hotel'
76
- ? `${t.requestBooking} books the rooms with ${v.brand} for a named guest: each stay becomes the hotel's own reservation with its own confirmation code, kept until it is cancelled and PAID AT THE HOTEL. IT TAKES NO MONEY AND COLLECTS NO CARD. Report it as booked and to be paid at the hotel, never as paid. When the answer says ${v.brand} has not confirmed it yet, say exactly that - it is neither booked nor failed until ${t.listBookings} says so. Never ask for a card number, and never put one into any field - if the guest offers card details, tell them this connector does not take them.`
77
- : v.demo
78
- ? // ⚠️ THIS SAID "a card is presented at check-in" two lines after
79
- // "never imply a room can actually be occupied" (2026-10-05 audit,
80
- // P2) - and a guest could have taken the code to the real hotel.
81
- `${t.requestBooking} makes a DEMONSTRATION booking request: it returns a confirmation code and the moment the demonstration hold lapses on its own. ${v.brand} does not receive it and no real room is held anywhere. IT TAKES NO MONEY AND COLLECTS NO CARD. Report it as a demonstration booking with its code and when the hold lapses - never as booked, paid or held by the hotel, and never tell the guest to present anything at a hotel. Never ask for a card number, and never put one into any field - if the guest offers card details, tell them this connector does not take them.`
82
- : `${t.requestBooking} asks ${v.brand} to hold the rooms for a named guest and returns a confirmation code and the moment the hold lapses. IT TAKES NO MONEY AND COLLECTS NO CARD. Report it as requested and held, never as booked-and-paid, and tell the guest when the hold lapses and that a card is presented at check-in. Never ask for a card number, and never put one into any field - if the guest offers card details, tell them this connector does not take them.`,
85
+ : v.market
86
+ ? `${t.requestBooking} books the rooms for a named guest with the group each ${v.noun} belongs to, one group at a time: a trip holding two groups' ${v.nounPlural} is booked group by group. What a booking makes is that group's, and the answer says it for every stay - a demonstration hold that lapses on its own (report it as a demonstration, never as a real hold), a test booking in a simulated system (report it as a test, never as a reservation), or the hotel's own reservation paid at the hotel (report it as booked, to be paid at the hotel, never as paid). IT TAKES NO MONEY AND COLLECTS NO CARD. Never ask for a card or a payment.`
87
+ : caps.booking === 'pay-at-hotel' && v.sandbox
88
+ ? `${t.requestBooking} makes a TEST booking in the simulated system: report it as a test booking with its code, never as a reservation, and never tell the guest to pay anything or expect a room. IT TAKES NO MONEY AND COLLECTS NO CARD. Never ask for a card number, and never put one into any field.`
89
+ : caps.booking === 'pay-at-hotel'
90
+ ? `${t.requestBooking} books the rooms with ${v.brand} for a named guest: each stay becomes the hotel's own reservation with its own confirmation code, kept until it is cancelled and PAID AT THE HOTEL. IT TAKES NO MONEY AND COLLECTS NO CARD. Report it as booked and to be paid at the hotel, never as paid. When the answer says ${v.brand} has not confirmed it yet, say exactly that - it is neither booked nor failed until ${t.listBookings} says so. Never ask for a card number, and never put one into any field - if the guest offers card details, tell them this connector does not take them.`
91
+ : v.demo
92
+ ? // ⚠️ THIS SAID "a card is presented at check-in" two lines after
93
+ // "never imply a room can actually be occupied" (2026-10-05 audit,
94
+ // P2) - and a guest could have taken the code to the real hotel.
95
+ `${t.requestBooking} makes a DEMONSTRATION booking request: it returns a confirmation code and the moment the demonstration hold lapses on its own. ${v.brand} does not receive it and no real room is held anywhere. IT TAKES NO MONEY AND COLLECTS NO CARD. Report it as a demonstration booking with its code and when the hold lapses - never as booked, paid or held by the hotel, and never tell the guest to present anything at a hotel. Never ask for a card number, and never put one into any field - if the guest offers card details, tell them this connector does not take them.`
96
+ : `${t.requestBooking} asks ${v.brand} to hold the rooms for a named guest and returns a confirmation code and the moment the hold lapses. IT TAKES NO MONEY AND COLLECTS NO CARD. Report it as requested and held, never as booked-and-paid, and tell the guest when the hold lapses and that a card is presented at check-in. Never ask for a card number, and never put one into any field - if the guest offers card details, tell them this connector does not take them.`,
83
97
  // ⚠️ THE SAME RULE AS THE EMAIL, AND FOR THE SAME REASON. A membership
84
98
  // number is the guest's to give; filled in from an account or a profile it
85
99
  // would hand somebody else's tier and point balance to whoever is typing.
@@ -108,7 +122,7 @@ export const buildInstructions = (brand, caps = FULL_CAPABILITIES) => {
108
122
  // ⚠️ PREVIEW, THEN CANCEL. The tool enforces this; the instruction is why.
109
123
  caps.changes
110
124
  ? `Moving a booking is the same two steps as cancelling one. ${t.previewChange} shows the stay it holds now, the stay it would hold and the difference between them - the new nights are priced at what those nights cost today, so a change can cost more than the booking did. Show that and get a yes before ${t.changeBooking} with \`confirmed\`. A rate the hotel will not move, and a change it has no rooms for, are refused there in the hotel's own words; a different HOTEL is a cancellation and a new booking, with whatever fee the old one carries, and calling it a change would hide that fee.`
111
- : `${v.brand} bookings cannot be moved to other nights or another room here. To change one, cancel it - preview first, as below - and book the new nights, which are priced at what they cost today. Say that plainly, with the cancellation fee if there is one, before doing either.`,
125
+ : `${v.market ? 'Bookings' : `${v.brand} bookings`} cannot be moved to other nights or another room here. To change one, cancel it - preview first, as below - and book the new nights, which are priced at what they cost today. Say that plainly, with the cancellation fee if there is one, before doing either.`,
112
126
  `Before cancelling anything: ${t.previewCancellation} says what it would cost, what comes back, and the rule behind it. Show the guest that and get a yes before calling ${t.cancelBooking} with \`confirmed\` - it returns the preview and cancels nothing without it. A guest who says "cancel it" has not yet seen the fee.`,
113
127
  // ⚠️ THE DIVISION OF LABOUR ON THESE TWO, in one line, because getting it
114
128
  // wrong in either direction is the failure: a model that writes prices into
@@ -138,16 +152,18 @@ export const buildInstructions = (brand, caps = FULL_CAPABILITIES) => {
138
152
  `An itinerary is a PLAN. Name the ${v.noun} on the first day of each stay: consecutive days at one ${v.noun} are one stay of that many nights, a dated day that names none keeps the guest where they slept the night before, and the day they leave needs none. ${t.itinerary} marks each stay as booked, in the trip, or only planned, and says how many of each; say so too, and never describe a planned stay as booked. Putting something in the trip is ${t.addToTrip}, and ${t.requestBooking} is what asks for the rooms.`,
139
153
  // ⚠️ ONE BOOKING PER STAY. Said to the model so it does not tell a guest
140
154
  // that cancelling "the booking" cancels the whole trip.
141
- caps.booking === 'pay-at-hotel'
142
- ? 'A trip of more than one stay is booked together as one booking per stay, each with its own confirmation code - each hotel keeps its own reservation. It is all or nothing: if one stay cannot be booked, the others are cancelled again and the answer says which failed. A cancellation is made to one booking, by its code, and leaves the others as they are.'
143
- : 'A trip of more than one stay is requested together and held as one booking per stay, each with its own confirmation code - each hotel holds its own nights. It is all or nothing: if one stay cannot be held, nothing is, and the answer says which. A change or a cancellation is made to one booking, by its code, and leaves the others as they are.',
155
+ v.market
156
+ ? "A trip of more than one stay is booked as one booking per stay, each with its own confirmation code - each hotel keeps its own nights. One group's stays are booked together and all or nothing: if one cannot be booked, none of that group's are, and the answer says which. A cancellation or a change touches only the booking it names."
157
+ : caps.booking === 'pay-at-hotel'
158
+ ? 'A trip of more than one stay is booked together as one booking per stay, each with its own confirmation code - each hotel keeps its own reservation. It is all or nothing: if one stay cannot be booked, the others are cancelled again and the answer says which failed. A cancellation is made to one booking, by its code, and leaves the others as they are.'
159
+ : 'A trip of more than one stay is requested together and held as one booking per stay, each with its own confirmation code - each hotel holds its own nights. It is all or nothing: if one stay cannot be held, nothing is, and the answer says which. A change or a cancellation is made to one booking, by its code, and leaves the others as they are.',
144
160
  // ⚠️ TWO CURRENCIES, TWO TOTALS - said here because the model is the one
145
161
  // who would otherwise add them up in a sentence.
146
162
  caps.oneCurrency
147
163
  ? ''
148
164
  : `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.`,
149
165
  caps.policies === false
150
- ? `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.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.`
166
+ ? `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.`
151
167
  : `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.`,
152
168
  `Availability is what the ${v.noun} says it has. Report a low room count as a fact if the guest asks; do not turn it into a reason to hurry.`,
153
169
  FENCE_RULE,
@@ -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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"}
package/dist/tools.d.ts CHANGED
@@ -15,7 +15,7 @@ export declare const LOOK_UP_MAX = 6;
15
15
  */
16
16
  export declare const buildTools: (n: ToolNames, v: Vocabulary, caps?: BackendCapabilities) => ({
17
17
  readonly name: `list_${string}${string}`;
18
- readonly description: `${string} ${string}, shown as a card. Asked with no place - or a country of many cities - it answers with the places to choose from: regions, countries and cities, each with how many ${string} it has; \`all\` lists the ${string} themselves. \`city\` (a city or a country) or \`query\` answers with the ${string}: a picture, the city and area, a rating where the ${string} publishes one, and a from-price, and a city usually holds several. With \`checkIn\` and \`checkOut\` every ${string} is priced for those nights - its cheapest room that takes the party, \`rooms\` of it, for the whole stay with taxes - or marked as having no room for them. \`sort\` and \`maxNightly\` order and cap by that price, or by the from-price without dates, where the matches share one currency. \`brand\`, \`facilities\`, \`freeCancellation\` and \`breakfast\` narrow the list, and the answer counts what each would leave. A long list comes a page at a time: the answer says how many more there are and the \`offset\` of the next page. Words or a place that match nothing are widened once, and the answer names what it widened to.${string}`;
18
+ readonly description: `${string}, shown as a card. Asked with no place - or a country of many cities - it answers with the places to choose from: regions, countries and cities, each with how many ${string} it has; \`all\` lists the ${string} themselves. \`city\` (a city or a country) or \`query\` answers with the ${string}: a picture, the city and area, a rating where the ${string} publishes one, and a from-price, and a city usually holds several. With \`checkIn\` and \`checkOut\` every ${string} is priced for those nights - its cheapest room that takes the party, \`rooms\` of it, for the whole stay with taxes - or marked as having no room for them. \`sort\` and \`maxNightly\` order and cap by that price, or by the from-price without dates, where the matches share one currency. \`brand\`, \`facilities\`, \`freeCancellation\` and \`breakfast\` narrow the list, and the answer counts what each would leave. A long list comes a page at a time: the answer says how many more there are and the \`offset\` of the next page. Words or a place that match nothing are widened once, and the answer names what it widened to.${string}`;
19
19
  readonly annotations: {
20
20
  readonly title: string;
21
21
  readonly readOnlyHint: true;
@@ -26,6 +26,30 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary, caps?: BackendCap
26
26
  readonly inputSchema: {
27
27
  readonly type: "object";
28
28
  readonly properties: {
29
+ readonly facilities: {
30
+ readonly type: "array";
31
+ readonly items: {
32
+ readonly type: "string";
33
+ readonly enum: string[];
34
+ };
35
+ readonly description: `What every ${string} listed must have`;
36
+ };
37
+ readonly freeCancellation: {
38
+ readonly type: "boolean";
39
+ readonly description: `Only ${string} with a room that can be cancelled free - and, with dates, that room is the one priced`;
40
+ };
41
+ readonly breakfast: {
42
+ readonly type: "boolean";
43
+ readonly description: `Only ${string} with a room that includes breakfast - and, with dates, that room is the one priced`;
44
+ };
45
+ readonly all: {
46
+ readonly type: "boolean";
47
+ readonly description: `Unnarrowed, or narrowed to a country of many cities, the answer is the places to choose from; true lists the ${string} themselves`;
48
+ };
49
+ readonly group?: {
50
+ type: string;
51
+ description: string;
52
+ } | undefined;
29
53
  readonly rooms: {
30
54
  readonly type: "integer";
31
55
  readonly minimum: 1;
@@ -53,26 +77,6 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary, caps?: BackendCap
53
77
  readonly type: "string";
54
78
  readonly description: "One of the group's brands, as the list's brand counts name it";
55
79
  };
56
- readonly facilities: {
57
- readonly type: "array";
58
- readonly items: {
59
- readonly type: "string";
60
- readonly enum: string[];
61
- };
62
- readonly description: `What every ${string} listed must have`;
63
- };
64
- readonly freeCancellation: {
65
- readonly type: "boolean";
66
- readonly description: `Only ${string} with a room that can be cancelled free - and, with dates, that room is the one priced`;
67
- };
68
- readonly breakfast: {
69
- readonly type: "boolean";
70
- readonly description: `Only ${string} with a room that includes breakfast - and, with dates, that room is the one priced`;
71
- };
72
- readonly all: {
73
- readonly type: "boolean";
74
- readonly description: `Unnarrowed, or narrowed to a country of many cities, the answer is the places to choose from; true lists the ${string} themselves`;
75
- };
76
80
  readonly checkIn: {
77
81
  readonly type: "string";
78
82
  readonly pattern: "^\\d{4}-\\d{2}-\\d{2}$";
@@ -322,6 +326,10 @@ export declare const buildTools: (n: ToolNames, v: Vocabulary, caps?: BackendCap
322
326
  readonly inputSchema: {
323
327
  readonly type: "object";
324
328
  readonly properties: {
329
+ readonly group?: {
330
+ type: string;
331
+ description: string;
332
+ } | undefined;
325
333
  readonly name: {
326
334
  readonly type: "string";
327
335
  readonly description: "The guest's full name, as it should appear on the booking";
@@ -808,8 +816,6 @@ export type ToolDeps = {
808
816
  tools: ToolNames;
809
817
  vocab: Vocabulary;
810
818
  logoUrl?: string;
811
- /** The hotel group's own site, for a guest who wants to read more than we carry. */
812
- websiteUrl?: string;
813
819
  /**
814
820
  * Missed guesses at a booking's code and email, or a membership's number and
815
821
  * surname - see limits.ts. Absent, nothing is counted.
@@ -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,EAAE,YAAY,EAAgB,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAI7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAgBhD,OAAO,EAIL,KAAK,SAAS,EAIf,MAAM,WAAW,CAAC;AACnB,OAAO,KAAK,EAYV,eAAe,EAIhB,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;AAuuBL;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,MAAM,mBAAmB,KACxB,MAAM,CAAC,MAAM,EAAE,OAAO,CAgBxB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,GAAG,SAAS,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAoNtE,CAAC;AAEH,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;;;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;AAg4BF;;;;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"}