@curless/hotel-storefront 0.33.2 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/aggregate/hotels.d.ts.map +1 -1
  2. package/dist/aggregate/hotels.js +7 -1
  3. package/dist/aggregate/hotels.js.map +1 -1
  4. package/dist/aggregate/make.d.ts.map +1 -1
  5. package/dist/aggregate/make.js +7 -1
  6. package/dist/aggregate/make.js.map +1 -1
  7. package/dist/backend.d.ts +4 -3
  8. package/dist/backend.d.ts.map +1 -1
  9. package/dist/backend.js.map +1 -1
  10. package/dist/card.generated.d.ts +1 -1
  11. package/dist/card.generated.js +2 -2
  12. package/dist/card.generated.js.map +1 -1
  13. package/dist/config.d.ts +13 -0
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js.map +1 -1
  16. package/dist/data.d.ts.map +1 -1
  17. package/dist/data.js +41 -0
  18. package/dist/data.js.map +1 -1
  19. package/dist/demo-hotels.d.ts +5 -1
  20. package/dist/demo-hotels.d.ts.map +1 -1
  21. package/dist/demo-hotels.js +41 -9
  22. package/dist/demo-hotels.js.map +1 -1
  23. package/dist/huazhu/backend.d.ts +2 -2
  24. package/dist/huazhu/backend.d.ts.map +1 -1
  25. package/dist/huazhu/backend.js +66 -9
  26. package/dist/huazhu/backend.js.map +1 -1
  27. package/dist/huazhu/catalog.d.ts +19 -2
  28. package/dist/huazhu/catalog.d.ts.map +1 -1
  29. package/dist/huazhu/catalog.js +63 -15
  30. package/dist/huazhu/catalog.js.map +1 -1
  31. package/dist/huazhu/fake.js +1 -1
  32. package/dist/huazhu/sandbox.d.ts.map +1 -1
  33. package/dist/huazhu/sandbox.js +9 -12
  34. package/dist/huazhu/sandbox.js.map +1 -1
  35. package/dist/legal.d.ts.map +1 -1
  36. package/dist/legal.js +118 -82
  37. package/dist/legal.js.map +1 -1
  38. package/dist/names.d.ts +13 -0
  39. package/dist/names.d.ts.map +1 -0
  40. package/dist/names.js +54 -0
  41. package/dist/names.js.map +1 -0
  42. package/dist/payments/checkout.d.ts +24 -1
  43. package/dist/payments/checkout.d.ts.map +1 -1
  44. package/dist/payments/checkout.js.map +1 -1
  45. package/dist/payments/fake-stripe.d.ts +34 -0
  46. package/dist/payments/fake-stripe.d.ts.map +1 -0
  47. package/dist/payments/fake-stripe.js +93 -0
  48. package/dist/payments/fake-stripe.js.map +1 -0
  49. package/dist/payments/stripe-checkout.d.ts +36 -0
  50. package/dist/payments/stripe-checkout.d.ts.map +1 -0
  51. package/dist/payments/stripe-checkout.js +126 -0
  52. package/dist/payments/stripe-checkout.js.map +1 -0
  53. package/dist/present.d.ts +16 -1
  54. package/dist/present.d.ts.map +1 -1
  55. package/dist/present.js +13 -1
  56. package/dist/present.js.map +1 -1
  57. package/dist/server.d.ts +2 -2
  58. package/dist/server.js +2 -2
  59. package/dist/surface.d.ts.map +1 -1
  60. package/dist/surface.js +34 -20
  61. package/dist/surface.js.map +1 -1
  62. package/dist/tools.d.ts.map +1 -1
  63. package/dist/tools.js +73 -31
  64. package/dist/tools.js.map +1 -1
  65. package/dist/types.d.ts +54 -0
  66. package/dist/types.d.ts.map +1 -1
  67. package/dist/vocab.d.ts +13 -0
  68. package/dist/vocab.d.ts.map +1 -1
  69. package/dist/vocab.js +22 -2
  70. package/dist/vocab.js.map +1 -1
  71. package/package.json +2 -1
@@ -0,0 +1,93 @@
1
+ // Stripe's Checkout and refund API, in memory - what `StripeCheckout` talks
2
+ // to - so a stay paid in advance on Stripe can be run through in a test with
3
+ // no Stripe and no card. It keeps Stripe's own rules: only the account's own
4
+ // key, an expired or paid page cannot be expired again, a refund only of a
5
+ // payment that was made.
6
+ export const createFakeStripe = (opts) => {
7
+ const sessions = new Map();
8
+ const refunds = new Map();
9
+ const calls = [];
10
+ let seq = 0;
11
+ const json = (status, body) => new Response(JSON.stringify(body), { status, headers: { 'content-type': 'application/json' } });
12
+ const err = (status, message) => json(status, { error: { message } });
13
+ const handle = async (url, init) => {
14
+ const method = (init.method ?? 'GET').toUpperCase();
15
+ const path = url.pathname;
16
+ const form = Object.fromEntries(new URLSearchParams(String(init.body ?? '')));
17
+ calls.push({ method, path, form });
18
+ if (new Headers(init.headers).get('authorization') !== `Bearer ${opts.apiKey}`)
19
+ return err(401, 'Invalid API Key provided');
20
+ if (method === 'POST' && path === '/v1/checkout/sessions') {
21
+ const amount = Number(form['line_items[0][price_data][unit_amount]']);
22
+ if (!(amount > 0))
23
+ return err(400, 'unit_amount must be positive');
24
+ const id = `cs_test_${++seq}`;
25
+ const s = {
26
+ id,
27
+ url: `https://checkout.stripe.com/c/pay/${id}`,
28
+ status: 'open',
29
+ payment_status: 'unpaid',
30
+ amount,
31
+ currency: String(form['line_items[0][price_data][currency]']),
32
+ ...(form['metadata[ref]'] ? { ref: form['metadata[ref]'] } : {}),
33
+ expiresAt: Number(form.expires_at),
34
+ payment_intent: null,
35
+ };
36
+ sessions.set(id, s);
37
+ return json(200, s);
38
+ }
39
+ const sessionPath = /^\/v1\/checkout\/sessions\/([^/]+)(\/expire)?$/.exec(path);
40
+ if (sessionPath) {
41
+ const s = sessions.get(decodeURIComponent(sessionPath[1] ?? ''));
42
+ if (!s)
43
+ return err(404, 'No such checkout.session');
44
+ if (method === 'GET')
45
+ return json(200, s);
46
+ if (method === 'POST' && sessionPath[2]) {
47
+ if (s.status !== 'open')
48
+ return err(400, 'Only Checkout Sessions with a status of open can be expired.');
49
+ s.status = 'expired';
50
+ return json(200, s);
51
+ }
52
+ }
53
+ if (method === 'POST' && path === '/v1/refunds') {
54
+ const paid = [...sessions.values()].find((s) => s.payment_intent === form.payment_intent);
55
+ if (!paid || paid.status !== 'complete')
56
+ return err(400, 'No such payment_intent');
57
+ if ([...refunds.values()].some((r) => r.payment_intent === form.payment_intent))
58
+ return err(400, 'Charge has already been refunded.');
59
+ const id = `re_test_${++seq}`;
60
+ const r = { id, payment_intent: String(form.payment_intent), status: 'pending' };
61
+ refunds.set(id, r);
62
+ return json(200, r);
63
+ }
64
+ const refundPath = /^\/v1\/refunds\/([^/]+)$/.exec(path);
65
+ if (method === 'GET' && refundPath) {
66
+ const r = refunds.get(decodeURIComponent(refundPath[1] ?? ''));
67
+ return r ? json(200, r) : err(404, 'No such refund');
68
+ }
69
+ return err(404, `Unrecognized request URL (${method}: ${path})`);
70
+ };
71
+ return {
72
+ sessions,
73
+ refunds,
74
+ calls,
75
+ fetch: (async (input, init) => handle(new URL(String(input instanceof Request ? input.url : input)), init ?? {})),
76
+ /** The guest pays on the page. */
77
+ pay(id) {
78
+ const s = sessions.get(id);
79
+ if (!s || s.status !== 'open')
80
+ throw new Error(`cannot pay ${id}`);
81
+ s.status = 'complete';
82
+ s.payment_status = 'paid';
83
+ s.payment_intent = `pi_test_${++seq}`;
84
+ },
85
+ /** The money arrives back on the card. */
86
+ settleRefunds() {
87
+ for (const r of refunds.values())
88
+ if (r.status === 'pending')
89
+ r.status = 'succeeded';
90
+ },
91
+ };
92
+ };
93
+ //# sourceMappingURL=fake-stripe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fake-stripe.js","sourceRoot":"","sources":["../../src/payments/fake-stripe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { Checkout, CheckoutState, OpenedCheckout, PaymentMethod } from './checkout.js';
2
+ export type StripeCheckoutOptions = {
3
+ /** A Stripe secret key in test mode: `sk_test_…`. */
4
+ apiKey: string;
5
+ /** Where Stripe sends the guest back after paying, or after turning back. */
6
+ returnUrl: string;
7
+ fetch?: typeof fetch;
8
+ timeoutMs?: number;
9
+ /** Stripe's API - a test's fake answers in its place. */
10
+ apiBase?: string;
11
+ };
12
+ export declare class StripeCheckout implements Checkout {
13
+ private readonly opts;
14
+ readonly method: PaymentMethod;
15
+ private readonly fetch;
16
+ private readonly base;
17
+ constructor(opts: StripeCheckoutOptions);
18
+ private call;
19
+ /** A Checkout page for one stay, at the total the guest was shown. */
20
+ open(o: {
21
+ ref: string;
22
+ title: string;
23
+ amountMinor: number;
24
+ currency: string;
25
+ }): Promise<OpenedCheckout>;
26
+ state(sessionId: string): Promise<CheckoutState>;
27
+ /** Expires an unpaid page; one paid in the last second answers `paid`, and that money is the caller's. */
28
+ close(sessionId: string): Promise<CheckoutState>;
29
+ /** All of it back - a refund of the payment the page took. */
30
+ refund(sessionId: string, reason: string): Promise<{
31
+ requestId: string;
32
+ status: string;
33
+ }>;
34
+ refundState(requestId: string): Promise<string>;
35
+ }
36
+ //# sourceMappingURL=stripe-checkout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-checkout.d.ts","sourceRoot":"","sources":["../../src/payments/stripe-checkout.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5F,MAAM,MAAM,qBAAqB,GAAG;IAClC,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AA6BF,qBAAa,cAAe,YAAW,QAAQ;IAKjC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAED,IAAI,EAAE,qBAAqB;YAS1C,IAAI;IA2BlB,sEAAsE;IAChE,IAAI,CAAC,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,cAAc,CAAC;IAqBrB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAMtD,0GAA0G;IACpG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAgBtD,8DAA8D;IACxD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBzF,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOtD"}
@@ -0,0 +1,126 @@
1
+ // Taking a guest's money for a stay paid in advance on Stripe directly - its
2
+ // hosted Checkout page and its refunds - while the agentbank gateway cannot
3
+ // take it yet: Curless's acquiring is not connected, and no merchant can be
4
+ // opened there (robin, 2026-10-15).
5
+ //
6
+ // ⚠️ TEST MODE ONLY. The key must be a Stripe test key (`sk_test_…`): a live
7
+ // one is refused before anything starts. A card is paid on Stripe's own page
8
+ // and never reaches us - nor does a test card.
9
+ //
10
+ // The same five calls as `GatewayCheckout`, so the booking path does not know
11
+ // which one it is talking to: open a page, read whether it was paid, close an
12
+ // unpaid one, give the money back whole, and follow that refund.
13
+ import { CheckoutError } from './checkout.js';
14
+ /** Stripe keeps a Checkout page open at least 30 minutes - ours closes it itself at its own deadline. */
15
+ const PAGE_LIFE_S = 31 * 60;
16
+ /** Stripe's refund states, as `GatewayCheckout.refundState` says them. */
17
+ const REFUND = {
18
+ pending: 'approved',
19
+ requires_action: 'approved',
20
+ succeeded: 'refunded',
21
+ failed: 'failed',
22
+ canceled: 'rejected',
23
+ };
24
+ const stateOf = (s) => s.status === 'complete' && s.payment_status === 'paid'
25
+ ? 'paid'
26
+ : s.status === 'expired'
27
+ ? 'closed'
28
+ : 'open';
29
+ export class StripeCheckout {
30
+ opts;
31
+ method = 'card';
32
+ fetch;
33
+ base;
34
+ constructor(opts) {
35
+ this.opts = opts;
36
+ if (!/^sk_test_/.test(opts.apiKey))
37
+ throw new CheckoutError('paying on Stripe directly takes a test-mode key only (sk_test_…) - no real card is charged here');
38
+ this.fetch = opts.fetch ?? globalThis.fetch;
39
+ this.base = (opts.apiBase ?? 'https://api.stripe.com').replace(/\/$/, '');
40
+ }
41
+ async call(method, path, form) {
42
+ let res;
43
+ try {
44
+ res = await this.fetch(`${this.base}${path}`, {
45
+ method,
46
+ headers: {
47
+ authorization: `Bearer ${this.opts.apiKey}`,
48
+ ...(form ? { 'content-type': 'application/x-www-form-urlencoded' } : {}),
49
+ },
50
+ ...(form ? { body: new URLSearchParams(form).toString() } : {}),
51
+ signal: AbortSignal.timeout(this.opts.timeoutMs ?? 15_000),
52
+ });
53
+ }
54
+ catch (err) {
55
+ throw new CheckoutError(`Stripe did not answer (${err.message})`);
56
+ }
57
+ const text = await res.text();
58
+ if (!res.ok) {
59
+ // Stripe's own message, never the request: the key rides in a header.
60
+ let said = text.slice(0, 300);
61
+ try {
62
+ said = JSON.parse(text).error?.message ?? said;
63
+ }
64
+ catch { }
65
+ throw new CheckoutError(`Stripe answered ${res.status}: ${said}`, res.status);
66
+ }
67
+ return (text ? JSON.parse(text) : {});
68
+ }
69
+ /** A Checkout page for one stay, at the total the guest was shown. */
70
+ async open(o) {
71
+ const back = this.opts.returnUrl;
72
+ const s = await this.call('POST', '/v1/checkout/sessions', {
73
+ mode: 'payment',
74
+ 'payment_method_types[0]': 'card',
75
+ 'line_items[0][quantity]': '1',
76
+ 'line_items[0][price_data][currency]': o.currency.toLowerCase(),
77
+ 'line_items[0][price_data][unit_amount]': String(o.amountMinor),
78
+ 'line_items[0][price_data][product_data][name]': o.title.slice(0, 200),
79
+ // The booking it pays for: the distributorResId, found again on both sides.
80
+ client_reference_id: o.ref,
81
+ 'metadata[ref]': o.ref,
82
+ 'payment_intent_data[metadata][ref]': o.ref,
83
+ success_url: `${back}${back.includes('?') ? '&' : '?'}paid=1`,
84
+ cancel_url: back,
85
+ expires_at: String(Math.floor(Date.now() / 1000) + PAGE_LIFE_S),
86
+ });
87
+ if (!s?.id || !s.url)
88
+ throw new CheckoutError('Stripe opened no Checkout page');
89
+ return { sessionId: s.id, url: s.url };
90
+ }
91
+ async state(sessionId) {
92
+ return stateOf(await this.call('GET', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}`));
93
+ }
94
+ /** Expires an unpaid page; one paid in the last second answers `paid`, and that money is the caller's. */
95
+ async close(sessionId) {
96
+ try {
97
+ return stateOf(await this.call('POST', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}/expire`, {}));
98
+ }
99
+ catch (err) {
100
+ // "Only Checkout Sessions with a status of open can be expired."
101
+ if (err instanceof CheckoutError && err.status === 400)
102
+ return this.state(sessionId);
103
+ throw err;
104
+ }
105
+ }
106
+ /** All of it back - a refund of the payment the page took. */
107
+ async refund(sessionId, reason) {
108
+ const s = await this.call('GET', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}`);
109
+ const intent = typeof s.payment_intent === 'string' ? s.payment_intent : s.payment_intent?.id;
110
+ if (!intent)
111
+ throw new CheckoutError('that Checkout page took no payment to give back');
112
+ const r = await this.call('POST', '/v1/refunds', {
113
+ payment_intent: intent,
114
+ reason: 'requested_by_customer',
115
+ 'metadata[why]': reason.slice(0, 450),
116
+ });
117
+ if (!r?.id)
118
+ throw new CheckoutError('Stripe opened no refund');
119
+ return { requestId: r.id, status: REFUND[String(r.status)] ?? 'approved' };
120
+ }
121
+ async refundState(requestId) {
122
+ const r = await this.call('GET', `/v1/refunds/${encodeURIComponent(requestId)}`);
123
+ return REFUND[String(r.status)] ?? 'approved';
124
+ }
125
+ }
126
+ //# sourceMappingURL=stripe-checkout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-checkout.js","sourceRoot":"","sources":["../../src/payments/stripe-checkout.ts"],"names":[],"mappings":"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"}
package/dist/present.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type Candidate, type HotelBackend } from './backend.js';
2
- import type { Booking, Hotel, Identity, Stay, TripLine } from './types.js';
2
+ import type { Booking, Hotel, HotelNames, Identity, Stay, TripLine } from './types.js';
3
3
  /** The hotels a name could be - none when the backend cannot say (see `namesLike`). */
4
4
  export declare const candidatesFor: (backend: HotelBackend, ref: string) => Candidate[];
5
5
  /**
@@ -142,6 +142,21 @@ export type ItineraryItem = {
142
142
  name: string;
143
143
  detail?: string;
144
144
  price?: string;
145
+ /**
146
+ * For the card to say in its own language (robin, 2026-10-15): the hotel's
147
+ * names, its area and city as `detail` says them, and its from-price
148
+ * without the words `price` puts round it.
149
+ */
150
+ names?: HotelNames;
151
+ area?: string;
152
+ city?: string;
153
+ nightly?: string;
154
+ /** Priced for the plan's nights: the whole stay, taxes in, and the room it is for. */
155
+ stayTotal?: string;
156
+ roomName?: string;
157
+ /** An add-on: its price and what it is per (`Extra.per`). */
158
+ unitPrice?: string;
159
+ per?: string;
145
160
  /**
146
161
  * ⚠️ THE FIELD THIS WHOLE CARD EXISTS FOR.
147
162
  *
@@ -1 +1 @@
1
- {"version":3,"file":"present.d.ts","sourceRoot":"","sources":["../src/present.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"present.d.ts","sourceRoot":"","sources":["../src/present.ts"],"names":[],"mappings":"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"}
package/dist/present.js CHANGED
@@ -177,8 +177,14 @@ export const buildItinerary = async (backend, days, opts) => {
177
177
  name: hotel.hotel.name,
178
178
  detail: [hotel.hotel.area, hotel.hotel.city].filter(Boolean).join(', '),
179
179
  ...(hotel.hotel.fromNightly
180
- ? { price: `${formatMoney(hotel.hotel.fromNightly)} a night` }
180
+ ? {
181
+ price: `${formatMoney(hotel.hotel.fromNightly)} a night`,
182
+ nightly: formatMoney(hotel.hotel.fromNightly),
183
+ }
181
184
  : {}),
185
+ ...(hotel.hotel.names ? { names: hotel.hotel.names } : {}),
186
+ ...(hotel.hotel.area ? { area: hotel.hotel.area } : {}),
187
+ city: hotel.hotel.city,
182
188
  ...(hotel.hotel.imageUrl ? { imageUrl: hotel.hotel.imageUrl } : {}),
183
189
  inTrip: false,
184
190
  });
@@ -207,6 +213,8 @@ export const buildItinerary = async (backend, days, opts) => {
207
213
  name: extra.name,
208
214
  detail: hotelText('add-on', extra.hotelId, extra.description, DESCRIPTION_MAX).text,
209
215
  price: `${formatMoney(extra.price)} ${unitWords(extra.per)}`,
216
+ unitPrice: formatMoney(extra.price),
217
+ per: extra.per,
210
218
  inTrip: opts.trip.some((l) => l.kind === 'extra' && l.hotelId === extra.hotelId && l.extraId === extra.id),
211
219
  };
212
220
  extraAt.set(item, extra.hotelId);
@@ -288,6 +296,7 @@ export const buildItinerary = async (backend, days, opts) => {
288
296
  if (opts.stay && !day.date && out[i - 1]?.date && isHotel(out[i - 1], item.id)) {
289
297
  item.checkout = true;
290
298
  item.price = undefined;
299
+ item.nightly = undefined;
291
300
  }
292
301
  let start = i;
293
302
  while (start > 0 && isHotel(out[start - 1], item.id))
@@ -331,6 +340,9 @@ export const buildItinerary = async (backend, days, opts) => {
331
340
  const best = priced?.rooms ? cheapest(priced.rooms) : undefined;
332
341
  if (best) {
333
342
  item.price = `${formatMoney(best.stayTotal)} for ${item.nights} ${item.nights === 1 ? 'night' : 'nights'}, taxes in · ${best.name}`;
343
+ item.stayTotal = formatMoney(best.stayTotal);
344
+ item.roomName = best.name;
345
+ item.nightly = undefined;
334
346
  item.roomId = best.id;
335
347
  }
336
348
  }
@@ -1 +1 @@
1
- {"version":3,"file":"present.js","sourceRoot":"","sources":["../src/present.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"present.js","sourceRoot":"","sources":["../src/present.ts"],"names":[],"mappings":"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"}
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.33.2";
31
+ export declare const VERSION = "0.35.0";
32
32
  /**
33
33
  * The card's resource URI.
34
34
  *
@@ -37,7 +37,7 @@ export declare const VERSION = "0.33.2";
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-v68.html";
40
+ export declare const CARD_URI = "ui://curless/hotel/booking-v70.html";
41
41
  /**
42
42
  * The URI one deployment names its card by: `CARD_URI` with a short hash of
43
43
  * everything a host caches under it - the card itself, and the hosts it may
package/dist/server.js CHANGED
@@ -46,7 +46,7 @@ export const INITIALIZE_PER_MINUTE = 300;
46
46
  * number. Found by reading the boot banner of a container that had just been
47
47
  * deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
48
48
  */
49
- export const VERSION = '0.33.2';
49
+ export const VERSION = '0.35.0';
50
50
  /**
51
51
  * The card's resource URI.
52
52
  *
@@ -55,7 +55,7 @@ export const VERSION = '0.33.2';
55
55
  * connector went storefront-v35 → v40 in a single day of UI work for exactly
56
56
  * this reason.
57
57
  */
58
- export const CARD_URI = 'ui://curless/hotel/booking-v68.html';
58
+ export const CARD_URI = 'ui://curless/hotel/booking-v70.html';
59
59
  /** The card as it ships, hashed once - what a host caches under the URI. */
60
60
  const CARD_HTML_SHA = createHash('sha256').update(HOTEL_CARD_HTML).digest('hex');
61
61
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAqB,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAa,KAAK,aAAa,EAAW,MAAM,YAAY,CAAC;AA8BpE,eAAO,MAAM,iBAAiB,GAC5B,OAAO,aAAa,EACpB,OAAM,mBAAuC,KAC5C,MAgKF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EACzE,OAAO,SAAS,CAAC,EAAE,EACnB,eAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,SAAS,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,YAAW,WAAW,CAAC,MAAM,CAAa;;;;;;;;;;;;;;;;;KAwBxC,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;CAIb,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,aAAa,GAAI,OAAO,aAAa,KAAG,WAAW,CAAC,MAAM,CAkBnE,CAAC"}
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAqB,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,KAAK,aAAa,EAAoB,MAAM,YAAY,CAAC;AA8BlE,eAAO,MAAM,iBAAiB,GAC5B,OAAO,aAAa,EACpB,OAAM,mBAAuC,KAC5C,MAiLF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EACzE,OAAO,SAAS,CAAC,EAAE,EACnB,eAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtC,SAAS,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClD,YAAW,WAAW,CAAC,MAAM,CAAa;;;;;;;;;;;;;;;;;KAwBxC,CAAC;AAEL;;;;;GAKG;AACH,eAAO,MAAM,UAAU;;;CAIb,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,aAAa,GAAI,OAAO,aAAa,KAAG,WAAW,CAAC,MAAM,CAkBnE,CAAC"}
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, upFirst } from './vocab.js';
3
+ import { noteFor, 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
  //
@@ -31,6 +31,8 @@ export const buildInstructions = (brand, caps = FULL_CAPABILITIES) => {
31
31
  const suppliers = v.market ? (brand.config.data.suppliers ?? []) : [];
32
32
  const groups = and(suppliers.map((x) => x.name));
33
33
  const simulated = suppliers.filter((x) => x.data.source === 'api' && x.data.api?.sandbox);
34
+ // …and the ones whose rooms come from their own test system (华住, 2026-10-15).
35
+ const testing = suppliers.filter((x) => x.data.source === 'api' && x.data.api?.test);
34
36
  // ⚠️ NOTHING HERE NAMES A TOOL THIS DEPLOYMENT DOES NOT OFFER. A model told
35
37
  // about a sign-in that does not exist asks the guest for a membership number
36
38
  // and then has nowhere to put it.
@@ -46,16 +48,24 @@ export const buildInstructions = (brand, caps = FULL_CAPABILITIES) => {
46
48
  // it is; "Otaless has your room" sends a guest to a desk that never
47
49
  // heard of Otaless (robin, 2026-10-07).
48
50
  `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.`
49
- : v.sandbox
50
- ? `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.`
51
- : `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.`,
51
+ : v.test
52
+ ? `These tools read ${v.brand}'s own TEST system, for testing: its properties, prices and cancellation terms are ${v.brand}'s test data, not its live ones.`
53
+ : v.sandbox
54
+ ? `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.`
55
+ : `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.`,
52
56
  // Demonstration data is a fact about the answer, not a disclaimer to bury.
53
57
  ...(v.demo
54
58
  ? [
55
- `⚠️ ${DEMO_NOTE} Say so the first time you quote a price, and never imply a room can actually be occupied.`,
59
+ `⚠️ ${noteFor(v)} Say so the first time you quote a price, and never imply a room can actually be occupied.`,
56
60
  ]
57
61
  : []),
58
62
  ...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.`),
63
+ ...testing.map((x) => `⚠️ ${x.name}'s ${v.nounPlural}, rates and bookings here come from ${x.name}'s own test system, not its live one: a booking with them made here is a test booking that holds no room for anyone and is paid by nobody. The answer says so for each such booking; say so whenever you report one.`),
64
+ ...(v.test
65
+ ? [
66
+ `⚠️ THIS IS A TEST ENVIRONMENT. The ${v.nounPlural}, rates and bookings come from ${v.brand}'s own test system, not its live one: a booking made here is a test booking in that system, holds no room for anyone, needs nobody to go to the hotel and ${caps.prepaid ? "moves no real money - a rate paid in advance is paid in the card page's test mode" : 'is paid by nobody'}. Say so whenever you report a booking, and never call it a reservation or say it is held for the guest.`,
67
+ ]
68
+ : []),
59
69
  ...(v.sandbox
60
70
  ? [
61
71
  `⚠️ 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 ${caps.prepaid ? "moves no real money - a rate paid in advance is paid in the card page's test mode" : 'is paid by nobody'}. Say so whenever you report a booking.`,
@@ -87,22 +97,26 @@ export const buildInstructions = (brand, caps = FULL_CAPABILITIES) => {
87
97
  takesPayment
88
98
  ? `${t.requestBooking} holds the rooms; payment follows. Do not describe a held booking as paid.`
89
99
  : v.market
90
- ? `${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.`
91
- : caps.booking === 'pay-at-hotel' && v.sandbox
100
+ ? `${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${testing.length ? " or in a group's own test 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.`
101
+ : caps.booking === 'pay-at-hotel' && v.test
92
102
  ? caps.prepaid
93
- ? // ⚠️ A SANDBOX THAT TAKES TEST PAYMENTS still books nothing real -
94
- // and its paid-in-advance rates are paid, in test mode, on the
95
- // gateway's card page (总线程, 2026-10-12).
96
- `${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 expect a room. A rate marked paid in advance is not booked at once: the answer gives a card page in test mode and the time it must be paid by - pass both on, say it is a test payment with no real money, and never call it booked until ${t.listBookings} says so. Every other rate is paid by nobody. Card details are typed only on that page: never ask for a card number, and never put one into any field.`
97
- : `${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.`
98
- : caps.booking === 'pay-at-hotel'
99
- ? `${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.`
100
- : v.demo
101
- ? // ⚠️ THIS SAID "a card is presented at check-in" two lines after
102
- // "never imply a room can actually be occupied" (2026-10-05 audit,
103
- // P2) - and a guest could have taken the code to the real hotel.
104
- `${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.`
105
- : `${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.`,
103
+ ? `${t.requestBooking} makes a TEST booking in ${v.brand}'s test system: report it as a test booking with its code, never as a reservation, and never tell the guest to expect a room or to go to the hotel. A rate marked paid in advance is not booked at once: the answer gives a card page in test mode and the time it must be paid by - pass both on, say it is a test payment with no real money, and never call it booked until ${t.listBookings} says so. Every other rate is paid by nobody. Card details are typed only on that page: never ask for a card number, and never put one into any field.`
104
+ : `${t.requestBooking} makes a TEST booking in ${v.brand}'s test system: report it as a test booking with its code, never as a reservation, and never tell the guest to pay anything, expect a room or go to the hotel. IT TAKES NO MONEY AND COLLECTS NO CARD. Never ask for a card number, and never put one into any field.`
105
+ : caps.booking === 'pay-at-hotel' && v.sandbox
106
+ ? caps.prepaid
107
+ ? // ⚠️ A SANDBOX THAT TAKES TEST PAYMENTS still books nothing real -
108
+ // and its paid-in-advance rates are paid, in test mode, on the
109
+ // gateway's card page (总线程, 2026-10-12).
110
+ `${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 expect a room. A rate marked paid in advance is not booked at once: the answer gives a card page in test mode and the time it must be paid by - pass both on, say it is a test payment with no real money, and never call it booked until ${t.listBookings} says so. Every other rate is paid by nobody. Card details are typed only on that page: never ask for a card number, and never put one into any field.`
111
+ : `${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.`
112
+ : caps.booking === 'pay-at-hotel'
113
+ ? `${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.`
114
+ : v.demo
115
+ ? // ⚠️ THIS SAID "a card is presented at check-in" two lines after
116
+ // "never imply a room can actually be occupied" (2026-10-05 audit,
117
+ // P2) - and a guest could have taken the code to the real hotel.
118
+ `${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.`
119
+ : `${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.`,
106
120
  // ⚠️ THE SAME RULE AS THE EMAIL, AND FOR THE SAME REASON. A membership
107
121
  // number is the guest's to give; filled in from an account or a profile it
108
122
  // would hand somebody else's tier and point balance to whoever is typing.