@curless/hotel-storefront 0.1.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 (98) hide show
  1. package/README.md +63 -0
  2. package/dist/__tests__/card-contract.test.d.ts +2 -0
  3. package/dist/__tests__/card-contract.test.d.ts.map +1 -0
  4. package/dist/__tests__/card-contract.test.js +64 -0
  5. package/dist/__tests__/card-contract.test.js.map +1 -0
  6. package/dist/__tests__/data.test.d.ts +2 -0
  7. package/dist/__tests__/data.test.d.ts.map +1 -0
  8. package/dist/__tests__/data.test.js +89 -0
  9. package/dist/__tests__/data.test.js.map +1 -0
  10. package/dist/__tests__/dates.test.d.ts +2 -0
  11. package/dist/__tests__/dates.test.d.ts.map +1 -0
  12. package/dist/__tests__/dates.test.js +71 -0
  13. package/dist/__tests__/dates.test.js.map +1 -0
  14. package/dist/__tests__/demo-hotels.test.d.ts +2 -0
  15. package/dist/__tests__/demo-hotels.test.d.ts.map +1 -0
  16. package/dist/__tests__/demo-hotels.test.js +240 -0
  17. package/dist/__tests__/demo-hotels.test.js.map +1 -0
  18. package/dist/__tests__/server.test.d.ts +2 -0
  19. package/dist/__tests__/server.test.d.ts.map +1 -0
  20. package/dist/__tests__/server.test.js +209 -0
  21. package/dist/__tests__/server.test.js.map +1 -0
  22. package/dist/__tests__/tool-descriptions.test.d.ts +2 -0
  23. package/dist/__tests__/tool-descriptions.test.d.ts.map +1 -0
  24. package/dist/__tests__/tool-descriptions.test.js +139 -0
  25. package/dist/__tests__/tool-descriptions.test.js.map +1 -0
  26. package/dist/__tests__/tools.test.d.ts +2 -0
  27. package/dist/__tests__/tools.test.d.ts.map +1 -0
  28. package/dist/__tests__/tools.test.js +226 -0
  29. package/dist/__tests__/tools.test.js.map +1 -0
  30. package/dist/backend.d.ts +43 -0
  31. package/dist/backend.d.ts.map +1 -0
  32. package/dist/backend.js +2 -0
  33. package/dist/backend.js.map +1 -0
  34. package/dist/card.generated.d.ts +4 -0
  35. package/dist/card.generated.d.ts.map +1 -0
  36. package/dist/card.generated.js +8 -0
  37. package/dist/card.generated.js.map +1 -0
  38. package/dist/config.d.ts +122 -0
  39. package/dist/config.d.ts.map +1 -0
  40. package/dist/config.js +42 -0
  41. package/dist/config.js.map +1 -0
  42. package/dist/data.d.ts +5 -0
  43. package/dist/data.d.ts.map +1 -0
  44. package/dist/data.js +183 -0
  45. package/dist/data.js.map +1 -0
  46. package/dist/dates.d.ts +32 -0
  47. package/dist/dates.d.ts.map +1 -0
  48. package/dist/dates.js +75 -0
  49. package/dist/dates.js.map +1 -0
  50. package/dist/demo-hotels.d.ts +96 -0
  51. package/dist/demo-hotels.d.ts.map +1 -0
  52. package/dist/demo-hotels.js +446 -0
  53. package/dist/demo-hotels.js.map +1 -0
  54. package/dist/fence.d.ts +24 -0
  55. package/dist/fence.d.ts.map +1 -0
  56. package/dist/fence.js +0 -0
  57. package/dist/fence.js.map +1 -0
  58. package/dist/index.d.ts +3 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +23 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/legal.d.ts +5 -0
  63. package/dist/legal.d.ts.map +1 -0
  64. package/dist/legal.js +111 -0
  65. package/dist/legal.js.map +1 -0
  66. package/dist/money.d.ts +13 -0
  67. package/dist/money.d.ts.map +1 -0
  68. package/dist/money.js +46 -0
  69. package/dist/money.js.map +1 -0
  70. package/dist/server.d.ts +85 -0
  71. package/dist/server.d.ts.map +1 -0
  72. package/dist/server.js +275 -0
  73. package/dist/server.js.map +1 -0
  74. package/dist/surface.d.ts +52 -0
  75. package/dist/surface.d.ts.map +1 -0
  76. package/dist/surface.js +99 -0
  77. package/dist/surface.js.map +1 -0
  78. package/dist/tools.d.ts +336 -0
  79. package/dist/tools.d.ts.map +1 -0
  80. package/dist/tools.js +862 -0
  81. package/dist/tools.js.map +1 -0
  82. package/dist/trip-ids.d.ts +16 -0
  83. package/dist/trip-ids.d.ts.map +1 -0
  84. package/dist/trip-ids.js +77 -0
  85. package/dist/trip-ids.js.map +1 -0
  86. package/dist/trip.d.ts +59 -0
  87. package/dist/trip.d.ts.map +1 -0
  88. package/dist/trip.js +149 -0
  89. package/dist/trip.js.map +1 -0
  90. package/dist/types.d.ts +193 -0
  91. package/dist/types.d.ts.map +1 -0
  92. package/dist/types.js +13 -0
  93. package/dist/types.js.map +1 -0
  94. package/dist/vocab.d.ts +33 -0
  95. package/dist/vocab.d.ts.map +1 -0
  96. package/dist/vocab.js +15 -0
  97. package/dist/vocab.js.map +1 -0
  98. package/package.json +44 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /** How long an id outlives its last use. Longer than the trip's own TTL, so an id never dies first. */
2
+ export declare const ID_TTL_MS: number;
3
+ export declare class TripIds {
4
+ private readonly now;
5
+ private readonly byId;
6
+ private readonly idByKey;
7
+ constructor(now?: () => number);
8
+ /** The id for this trip key, minting one the first time and keeping it after. */
9
+ idFor(key: string): string;
10
+ /** The key an id names, or undefined - an id we never issued names nothing. */
11
+ keyFor(id: string): string | undefined;
12
+ get size(): number;
13
+ private sweep;
14
+ private evict;
15
+ }
16
+ //# sourceMappingURL=trip-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trip-ids.d.ts","sourceRoot":"","sources":["../src/trip-ids.ts"],"names":[],"mappings":"AAgBA,uGAAuG;AACvG,eAAO,MAAM,SAAS,QAAkB,CAAC;AAKzC,qBAAa,OAAO;IAIN,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;gBAExB,GAAG,GAAE,MAAM,MAAyB;IAEjE,iFAAiF;IACjF,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAiB1B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAQtC,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,KAAK;CASd"}
@@ -0,0 +1,77 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ // The name a trip answers to, so the card and the conversation reach the same one.
3
+ //
4
+ // ⚠️ THIS IS NOT BELT AND BRACES. The shopping connector shipped without it and
5
+ // a buyer who filled the cart ON THE CARD was then told by the assistant that
6
+ // the cart was empty (Claude, 2026-09-15): a card's tool calls reach the server
7
+ // on a DIFFERENT connection from the conversation's, with a different
8
+ // `Mcp-Session-Id` or none at all, so a key built only from the session is a
9
+ // different key. The card therefore names the trip it is showing, and the id
10
+ // travels back to it in `_meta`.
11
+ //
12
+ // An id is a random UUID and nothing else - it is not a secret, but it is also
13
+ // not guessable, and it maps to a key that already exists. Nobody can mint one
14
+ // that points at someone else's trip.
15
+ /** How long an id outlives its last use. Longer than the trip's own TTL, so an id never dies first. */
16
+ export const ID_TTL_MS = 6 * 60 * 60_000;
17
+ const MAX_IDS = 5_000;
18
+ export class TripIds {
19
+ now;
20
+ byId = new Map();
21
+ idByKey = new Map();
22
+ constructor(now = () => Date.now()) {
23
+ this.now = now;
24
+ }
25
+ /** The id for this trip key, minting one the first time and keeping it after. */
26
+ idFor(key) {
27
+ this.sweep();
28
+ const existing = this.idByKey.get(key);
29
+ if (existing) {
30
+ const entry = this.byId.get(existing);
31
+ if (entry) {
32
+ entry.at = this.now();
33
+ return existing;
34
+ }
35
+ }
36
+ const id = randomUUID();
37
+ this.byId.set(id, { key, at: this.now() });
38
+ this.idByKey.set(key, id);
39
+ this.evict();
40
+ return id;
41
+ }
42
+ /** The key an id names, or undefined - an id we never issued names nothing. */
43
+ keyFor(id) {
44
+ this.sweep();
45
+ const entry = this.byId.get(id);
46
+ if (!entry)
47
+ return undefined;
48
+ entry.at = this.now();
49
+ return entry.key;
50
+ }
51
+ get size() {
52
+ this.sweep();
53
+ return this.byId.size;
54
+ }
55
+ sweep() {
56
+ const cutoff = this.now() - ID_TTL_MS;
57
+ for (const [id, entry] of this.byId) {
58
+ if (entry.at < cutoff) {
59
+ this.byId.delete(id);
60
+ if (this.idByKey.get(entry.key) === id)
61
+ this.idByKey.delete(entry.key);
62
+ }
63
+ }
64
+ }
65
+ evict() {
66
+ while (this.byId.size > MAX_IDS) {
67
+ const oldest = this.byId.keys().next().value;
68
+ if (oldest === undefined)
69
+ return;
70
+ const entry = this.byId.get(oldest);
71
+ this.byId.delete(oldest);
72
+ if (entry && this.idByKey.get(entry.key) === oldest)
73
+ this.idByKey.delete(entry.key);
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=trip-ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trip-ids.js","sourceRoot":"","sources":["../src/trip-ids.ts"],"names":[],"mappings":"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"}
package/dist/trip.d.ts ADDED
@@ -0,0 +1,59 @@
1
+ import type { TripLine } from './types.js';
2
+ /** Rooms of one type on one set of dates. A party, not a tour group. */
3
+ export declare const MAX_ROOMS_PER_LINE = 5;
4
+ /** Units of one add-on. */
5
+ export declare const MAX_EXTRA_QUANTITY = 20;
6
+ /** Distinct lines in one trip - a multi-city trip with add-ons, not an itinerary business. */
7
+ export declare const MAX_LINES = 20;
8
+ /** An untouched trip is forgotten after this long. Longer than a cart's: choosing dates takes longer than choosing a colour. */
9
+ export declare const TRIP_TTL_MS: number;
10
+ /** Trips held at once, across every brand and session. */
11
+ export declare const MAX_TRIPS = 2000;
12
+ /** 0 removes; anything else is clamped into 1...max. */
13
+ export declare const clampCount: (raw: unknown, max: number) => number;
14
+ /**
15
+ * What makes two lines the same line.
16
+ *
17
+ * The dates are in a room's key on purpose - see the note at the top. An
18
+ * add-on's key does not carry its day: a guest asking for the airport transfer
19
+ * twice means two people in the car, not two transfers on different days, and
20
+ * the day is set from the stay anyway.
21
+ */
22
+ export declare const lineKey: (line: TripLine) => string;
23
+ export declare class TripStore {
24
+ private readonly now;
25
+ private readonly trips;
26
+ constructor(now?: () => number);
27
+ /** This key's lines, newest edit last. Never null: no trip is an empty one. */
28
+ read(key: string): TripLine[];
29
+ /**
30
+ * Set one line to an absolute count - 0 removes it.
31
+ *
32
+ * Absolute rather than a delta, because the two callers disagree about what a
33
+ * delta means: the card's stepper knows the number it is showing, while an
34
+ * assistant saying "add one more" after a failed round trip would send a
35
+ * second delta for the same request. Both ask for the state they want, and
36
+ * repeating the ask changes nothing.
37
+ */
38
+ set(key: string, line: TripLine): TripLine[];
39
+ /** Forget this trip - after booking, or when the guest empties it. */
40
+ clear(key: string): void;
41
+ /** Trips held right now. For a status line and for the tests. */
42
+ get size(): number;
43
+ private normalise;
44
+ private sweep;
45
+ private evictOverflow;
46
+ }
47
+ /**
48
+ * The key one trip lives under.
49
+ *
50
+ * THE BRAND IS PART OF IT. One process can serve several hotel groups, and a
51
+ * key that was only the session would hand a guest who browsed two groups one
52
+ * trip holding both - with hotel ids that only resolve in one of them.
53
+ *
54
+ * The session comes from the host's `Mcp-Session-Id`. A host that sends none
55
+ * gets the fallback the caller passes - never a shared constant, or two guests
56
+ * would share a trip.
57
+ */
58
+ export declare const tripKey: (session: string, brand: string) => string;
59
+ //# sourceMappingURL=trip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trip.d.ts","sourceRoot":"","sources":["../src/trip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,YAAY,CAAC;AAyBjD,wEAAwE;AACxE,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,2BAA2B;AAC3B,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,8FAA8F;AAC9F,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,gIAAgI;AAChI,eAAO,MAAM,WAAW,QAAkB,CAAC;AAC3C,0DAA0D;AAC1D,eAAO,MAAM,SAAS,OAAQ,CAAC;AAE/B,wDAAwD;AACxD,eAAO,MAAM,UAAU,GAAI,KAAK,OAAO,EAAE,KAAK,MAAM,KAAG,MAItD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,QAAQ,KAAG,MAGI,CAAC;AAI9C,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;gBAErB,GAAG,GAAE,MAAM,MAAyB;IAEjE,+EAA+E;IAC/E,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE;IAK7B;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE;IAgB5C,sEAAsE;IACtE,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB,iEAAiE;IACjE,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,aAAa;CAStB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,OAAO,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG,MACpB,CAAC"}
package/dist/trip.js ADDED
@@ -0,0 +1,149 @@
1
+ // The guest's trip, while they are still planning it.
2
+ //
3
+ // The shopping connector's cart with one difference that changes everything:
4
+ // a cart line is a thing, a trip line is a thing ON DATES. Two nights at the
5
+ // Island Shangri-La in October and two in November are different lines even
6
+ // though they name the same room, so the key carries the dates. Getting that
7
+ // wrong would silently overwrite the first stay with the second - the guest
8
+ // would see one booking where they asked for two.
9
+ //
10
+ // WHY THE SERVER HOLDS IT. The guest edits from two places that cannot see each
11
+ // other: the card (a room's Add, a stepper on an add-on) and the conversation
12
+ // ("make it two rooms"). A trip kept in the card is lost the moment the
13
+ // assistant renders anything else, and one kept by the model is a list it
14
+ // retypes - which is how a night nobody asked for appears.
15
+ //
16
+ // AND WHY IT KEEPS ALMOST NOTHING. A line is ids, dates and a count. Every
17
+ // price is computed from the backend each time the trip is shown, so a rate
18
+ // that moved between planning and booking is the hotel's current one - a trip
19
+ // that remembered prices would quote a number the hotel then refuses.
20
+ //
21
+ // In memory, deliberately: a trip is worth nothing once the conversation ends,
22
+ // and a restart losing one costs a guest a few taps. Bounded on both axes.
23
+ /** Rooms of one type on one set of dates. A party, not a tour group. */
24
+ export const MAX_ROOMS_PER_LINE = 5;
25
+ /** Units of one add-on. */
26
+ export const MAX_EXTRA_QUANTITY = 20;
27
+ /** Distinct lines in one trip - a multi-city trip with add-ons, not an itinerary business. */
28
+ export const MAX_LINES = 20;
29
+ /** An untouched trip is forgotten after this long. Longer than a cart's: choosing dates takes longer than choosing a colour. */
30
+ export const TRIP_TTL_MS = 4 * 60 * 60_000;
31
+ /** Trips held at once, across every brand and session. */
32
+ export const MAX_TRIPS = 2_000;
33
+ /** 0 removes; anything else is clamped into 1...max. */
34
+ export const clampCount = (raw, max) => {
35
+ const n = typeof raw === 'number' && Number.isFinite(raw) ? Math.floor(raw) : Number.NaN;
36
+ if (!Number.isFinite(n) || n <= 0)
37
+ return 0;
38
+ return Math.min(n, max);
39
+ };
40
+ /**
41
+ * What makes two lines the same line.
42
+ *
43
+ * The dates are in a room's key on purpose - see the note at the top. An
44
+ * add-on's key does not carry its day: a guest asking for the airport transfer
45
+ * twice means two people in the car, not two transfers on different days, and
46
+ * the day is set from the stay anyway.
47
+ */
48
+ export const lineKey = (line) => line.kind === 'room'
49
+ ? `room|${line.hotelId}|${line.roomId}|${line.stay.checkIn}|${line.stay.checkOut}`
50
+ : `extra|${line.hotelId}|${line.extraId}`;
51
+ export class TripStore {
52
+ now;
53
+ trips = new Map();
54
+ constructor(now = () => Date.now()) {
55
+ this.now = now;
56
+ }
57
+ /** This key's lines, newest edit last. Never null: no trip is an empty one. */
58
+ read(key) {
59
+ this.sweep();
60
+ return (this.trips.get(key)?.lines ?? []).map((l) => ({ ...l }));
61
+ }
62
+ /**
63
+ * Set one line to an absolute count - 0 removes it.
64
+ *
65
+ * Absolute rather than a delta, because the two callers disagree about what a
66
+ * delta means: the card's stepper knows the number it is showing, while an
67
+ * assistant saying "add one more" after a failed round trip would send a
68
+ * second delta for the same request. Both ask for the state they want, and
69
+ * repeating the ask changes nothing.
70
+ */
71
+ set(key, line) {
72
+ this.sweep();
73
+ const wanted = this.normalise(line);
74
+ const others = (this.trips.get(key)?.lines ?? []).filter((l) => lineKey(l) !== lineKey(line));
75
+ const lines = wanted ? [...others, wanted] : others;
76
+ if (wanted && lines.length > MAX_LINES)
77
+ lines.shift(); // the oldest goes, not what was just asked for
78
+ if (lines.length === 0) {
79
+ this.trips.delete(key);
80
+ return [];
81
+ }
82
+ this.trips.delete(key);
83
+ this.trips.set(key, { lines, at: this.now() });
84
+ this.evictOverflow();
85
+ return lines.map((l) => ({ ...l }));
86
+ }
87
+ /** Forget this trip - after booking, or when the guest empties it. */
88
+ clear(key) {
89
+ this.trips.delete(key);
90
+ }
91
+ /** Trips held right now. For a status line and for the tests. */
92
+ get size() {
93
+ this.sweep();
94
+ return this.trips.size;
95
+ }
96
+ normalise(line) {
97
+ if (line.kind === 'room') {
98
+ const rooms = clampCount(line.rooms ?? 1, MAX_ROOMS_PER_LINE);
99
+ if (rooms === 0)
100
+ return null;
101
+ const stay = {
102
+ checkIn: line.stay.checkIn,
103
+ checkOut: line.stay.checkOut,
104
+ guests: Math.max(1, Math.floor(line.stay.guests)),
105
+ };
106
+ return { kind: 'room', hotelId: line.hotelId, roomId: line.roomId, stay, rooms };
107
+ }
108
+ const quantity = clampCount(line.quantity, MAX_EXTRA_QUANTITY);
109
+ if (quantity === 0)
110
+ return null;
111
+ return {
112
+ kind: 'extra',
113
+ hotelId: line.hotelId,
114
+ extraId: line.extraId,
115
+ quantity,
116
+ ...(line.day ? { day: line.day } : {}),
117
+ };
118
+ }
119
+ sweep() {
120
+ const cutoff = this.now() - TRIP_TTL_MS;
121
+ for (const [key, entry] of this.trips) {
122
+ if (entry.at < cutoff)
123
+ this.trips.delete(key);
124
+ }
125
+ }
126
+ evictOverflow() {
127
+ // Insertion order is edit order - `set` deletes and re-inserts - so the
128
+ // first key is the one nobody has touched for longest.
129
+ while (this.trips.size > MAX_TRIPS) {
130
+ const oldest = this.trips.keys().next().value;
131
+ if (oldest === undefined)
132
+ return;
133
+ this.trips.delete(oldest);
134
+ }
135
+ }
136
+ }
137
+ /**
138
+ * The key one trip lives under.
139
+ *
140
+ * THE BRAND IS PART OF IT. One process can serve several hotel groups, and a
141
+ * key that was only the session would hand a guest who browsed two groups one
142
+ * trip holding both - with hotel ids that only resolve in one of them.
143
+ *
144
+ * The session comes from the host's `Mcp-Session-Id`. A host that sends none
145
+ * gets the fallback the caller passes - never a shared constant, or two guests
146
+ * would share a trip.
147
+ */
148
+ export const tripKey = (session, brand) => `${session} ${brand.toLowerCase()}`;
149
+ //# sourceMappingURL=trip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trip.js","sourceRoot":"","sources":["../src/trip.ts"],"names":[],"mappings":"AAEA,sDAAsD;AACtD,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,4EAA4E;AAC5E,kDAAkD;AAClD,EAAE;AACF,gFAAgF;AAChF,8EAA8E;AAC9E,wEAAwE;AACxE,0EAA0E;AAC1E,2DAA2D;AAC3D,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,8EAA8E;AAC9E,sEAAsE;AACtE,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAE3E,wEAAwE;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,2BAA2B;AAC3B,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,gIAAgI;AAChI,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;AAC3C,0DAA0D;AAC1D,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC;AAE/B,wDAAwD;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAY,EAAE,GAAW,EAAU,EAAE;IAC9D,MAAM,CAAC,GAAG,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;IACzF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAc,EAAU,EAAE,CAChD,IAAI,CAAC,IAAI,KAAK,MAAM;IAClB,CAAC,CAAC,QAAQ,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;IAClF,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;AAI9C,MAAM,OAAO,SAAS;IAGS;IAFZ,KAAK,GAAG,IAAI,GAAG,EAAiB,CAAC;IAElD,YAA6B,MAAoB,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAApC,QAAG,GAAH,GAAG,CAAiC;IAAG,CAAC;IAErE,+EAA+E;IAC/E,IAAI,CAAC,GAAW;QACd,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;;;;;;;OAQG;IACH,GAAG,CAAC,GAAW,EAAE,IAAc;QAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9F,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpD,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS;YAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,+CAA+C;QACtG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,iEAAiE;IACjE,IAAI,IAAI;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAEO,SAAS,CAAC,IAAc;QAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAC9D,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC7B,MAAM,IAAI,GAAS;gBACjB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;gBAC1B,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAC5B,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aAClD,CAAC;YACF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACnF,CAAC;QACD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAC/D,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ;YACR,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvC,CAAC;IACJ,CAAC;IAEO,KAAK;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;QACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,EAAE,GAAG,MAAM;gBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAEO,aAAa;QACnB,wEAAwE;QACxE,uDAAuD;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC9C,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CAChE,GAAG,OAAO,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC"}
@@ -0,0 +1,193 @@
1
+ /** The nights someone is asking about. `YYYY-MM-DD`, check-out exclusive. */
2
+ export type Stay = {
3
+ checkIn: string;
4
+ checkOut: string;
5
+ /** How many people in the room. Beds, not bookings. */
6
+ guests: number;
7
+ };
8
+ /** Money as the shop's own smallest unit plus its currency - never a float of dollars. */
9
+ export type Money = {
10
+ minor: number;
11
+ currency: string;
12
+ };
13
+ export type Hotel = {
14
+ id: string;
15
+ name: string;
16
+ /** Shangri-La, Kerry, JEN, Traders … a group runs several brands. */
17
+ brand: string;
18
+ city: string;
19
+ /** For grouping in the card: "Hong Kong", "Shanghai" … the city as a slug. */
20
+ cityId: string;
21
+ /** Where in the city - Admiralty, Pudong. What a guest actually chooses between. */
22
+ area?: string;
23
+ summary: string;
24
+ amenities: string[];
25
+ address?: string;
26
+ /** The hotel's own page, for a guest who wants to read more than we carry. */
27
+ url?: string;
28
+ imageUrl?: string;
29
+ checkInFrom?: string;
30
+ checkOutBy?: string;
31
+ /** The cheapest room's nightly rate, for a list that shows one price per hotel. */
32
+ fromNightly?: Money;
33
+ /** Present only where the hotel publishes one. Never invented, never averaged. */
34
+ rating?: {
35
+ value: number;
36
+ scaleMax: number;
37
+ count: number;
38
+ };
39
+ };
40
+ export type Room = {
41
+ id: string;
42
+ name: string;
43
+ sleeps: number;
44
+ sizeSqm?: number;
45
+ beds?: string;
46
+ view?: string;
47
+ breakfast: boolean;
48
+ /**
49
+ * What one night costs on these dates, and what the whole stay costs.
50
+ * When the nights are not all the same price - a Friday costs more - this is
51
+ * their average, and `stayTotal` is the exact figure to compare hotels on.
52
+ * `stayTotal` includes taxes and fees.
53
+ */
54
+ nightly: Money;
55
+ stayTotal: Money;
56
+ /** Taxes and fees already inside `stayTotal`, named so the card can show the split. */
57
+ taxesAndFees: Money;
58
+ nights: number;
59
+ /** How the rate behaves if they change their mind. */
60
+ refundable: boolean;
61
+ /** ISO timestamp. Absent on a non-refundable rate. */
62
+ freeCancellationUntil?: string;
63
+ /** What the hotel says it still has for these dates. Never dressed up as urgency. */
64
+ roomsLeft: number;
65
+ };
66
+ export type HotelDetail = {
67
+ hotel: Hotel;
68
+ /** Only when the caller gave dates: what can be booked, priced for those nights. */
69
+ stay?: Stay;
70
+ rooms?: Room[];
71
+ /** Why there are no rooms - closed dates, too many guests, sold out. */
72
+ noRooms?: string;
73
+ };
74
+ export type ExtraKind = 'transfer' | 'dining' | 'experience' | 'family' | 'wellness';
75
+ /** An add-on: an airport transfer, a dinner, a guided walk. Priced per stay or per person. */
76
+ export type Extra = {
77
+ id: string;
78
+ hotelId: string;
79
+ name: string;
80
+ kind: ExtraKind;
81
+ description: string;
82
+ price: Money;
83
+ /** 'stay' = once for the booking; 'person' = times the guests; 'night' = times the nights. */
84
+ per: 'stay' | 'person' | 'night';
85
+ /** Where it belongs in a day-by-day trip: arrival, departure, or any day. */
86
+ when?: 'arrival' | 'departure' | 'any';
87
+ };
88
+ /** One line of a trip: nights in a room, or an add-on. */
89
+ export type TripLine = {
90
+ kind: 'room';
91
+ hotelId: string;
92
+ roomId: string;
93
+ stay: Stay;
94
+ /** How many of this room type, for a party that needs two. Default 1. */
95
+ rooms?: number;
96
+ } | {
97
+ kind: 'extra';
98
+ hotelId: string;
99
+ extraId: string;
100
+ quantity: number;
101
+ day?: string;
102
+ };
103
+ export type TripDraft = {
104
+ lines: TripLine[];
105
+ };
106
+ /** A trip line priced, with enough on it for the card to draw a day-by-day plan. */
107
+ export type QuoteLine = {
108
+ kind: 'room' | 'extra';
109
+ hotelId: string;
110
+ hotelName: string;
111
+ /** The room type's id, so a held room can be counted back against it. */
112
+ roomRef?: string;
113
+ /** The add-on's id, for the same reason: the card has to find the line it is showing. */
114
+ extraRef?: string;
115
+ /** Room name or add-on name. */
116
+ title: string;
117
+ detail?: string;
118
+ stay?: Stay;
119
+ nights?: number;
120
+ quantity?: number;
121
+ unit: Money;
122
+ total: Money;
123
+ refundable?: boolean;
124
+ freeCancellationUntil?: string;
125
+ /** The day this belongs to in the plan, `YYYY-MM-DD`. */
126
+ day?: string;
127
+ };
128
+ export type Quote = {
129
+ lines: QuoteLine[];
130
+ /** Rooms and add-ons before tax. */
131
+ subtotal: Money;
132
+ taxesAndFees: Money;
133
+ /** What the guest would pay, all in. */
134
+ total: Money;
135
+ /** The stay this trip covers, when every room line agrees on it. */
136
+ stay?: Stay;
137
+ /** Lines that could not be priced (a room that went, a date out of range). */
138
+ dropped?: {
139
+ title: string;
140
+ why: string;
141
+ }[];
142
+ };
143
+ export type Guest = {
144
+ name: string;
145
+ email: string;
146
+ phone?: string;
147
+ notes?: string;
148
+ };
149
+ export type BookingStatus =
150
+ /** Held for the guest, not paid. What this connector creates today. */
151
+ 'requested' | 'confirmed' | 'cancelled' | 'expired';
152
+ export type Booking = {
153
+ id: string;
154
+ /** What a guest quotes at the desk. */
155
+ confirmationCode: string;
156
+ status: BookingStatus;
157
+ createdAt: string;
158
+ /** A request is held until this moment, then it lapses. */
159
+ holdUntil?: string;
160
+ hotelId: string;
161
+ hotelName: string;
162
+ stay: Stay;
163
+ guest: Guest;
164
+ quote: Quote;
165
+ /** Set once cancelled. */
166
+ cancelledAt?: string;
167
+ cancellationFee?: Money;
168
+ };
169
+ export type CancellationPreview = {
170
+ bookingId: string;
171
+ confirmationCode: string;
172
+ /** What cancelling now would cost. Zero inside the free window. */
173
+ fee: Money;
174
+ refund: Money;
175
+ /** The rule in the hotel's own words, so the guest can check our arithmetic. */
176
+ rule: string;
177
+ freeUntil?: string;
178
+ /** False when the booking is already cancelled or has lapsed. */
179
+ cancellable: boolean;
180
+ };
181
+ /** Who is asking - the conversation, until there is a real sign-in. */
182
+ export type Identity = {
183
+ sessionId: string;
184
+ email?: string;
185
+ };
186
+ export type HotelPolicyTopic = 'cancellation' | 'check-in' | 'children' | 'pets' | 'deposit' | 'accessibility';
187
+ export type HotelPolicy = {
188
+ topic: HotelPolicyTopic;
189
+ title: string;
190
+ text: string;
191
+ url?: string;
192
+ };
193
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,13 @@
1
+ // What a hotel connector deals in. One file, because every other file in this
2
+ // package - the backend, the tools, the card's payloads - is shaped by it, and
3
+ // a type that lives next to one caller drifts from the others.
4
+ //
5
+ // ⚠️ DATES ARE NOT AN OPTION HERE. A shop's product has a price; a hotel room
6
+ // has a price ONLY once someone says which nights. Everything that can carry a
7
+ // price therefore takes a `Stay`, and the parts that cannot (a hotel's summary,
8
+ // its amenities) are deliberately separate from the parts that can (rooms,
9
+ // extras, a quote). That is the one structural difference between this package
10
+ // and the shopping one, and putting it in the types is how it stays true when
11
+ // the tools are written.
12
+ export {};
13
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,+DAA+D;AAC/D,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,2EAA2E;AAC3E,+EAA+E;AAC/E,8EAA8E;AAC9E,yBAAyB"}