@curless/hotel-storefront 0.34.0 → 0.35.1

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 (55) hide show
  1. package/dist/aggregate/make.d.ts.map +1 -1
  2. package/dist/aggregate/make.js +7 -1
  3. package/dist/aggregate/make.js.map +1 -1
  4. package/dist/backend.d.ts +2 -2
  5. package/dist/backend.d.ts.map +1 -1
  6. package/dist/card.generated.d.ts +1 -1
  7. package/dist/card.generated.js +2 -2
  8. package/dist/card.generated.js.map +1 -1
  9. package/dist/config.d.ts +24 -4
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js.map +1 -1
  12. package/dist/huazhu/backend.d.ts +2 -2
  13. package/dist/huazhu/backend.d.ts.map +1 -1
  14. package/dist/huazhu/backend.js +119 -10
  15. package/dist/huazhu/backend.js.map +1 -1
  16. package/dist/huazhu/bookings.d.ts +2 -0
  17. package/dist/huazhu/bookings.d.ts.map +1 -1
  18. package/dist/huazhu/bookings.js.map +1 -1
  19. package/dist/huazhu/catalog.d.ts +7 -1
  20. package/dist/huazhu/catalog.d.ts.map +1 -1
  21. package/dist/huazhu/catalog.js +8 -4
  22. package/dist/huazhu/catalog.js.map +1 -1
  23. package/dist/huazhu/make.d.ts.map +1 -1
  24. package/dist/huazhu/make.js +44 -13
  25. package/dist/huazhu/make.js.map +1 -1
  26. package/dist/legal.d.ts.map +1 -1
  27. package/dist/legal.js +131 -83
  28. package/dist/legal.js.map +1 -1
  29. package/dist/payments/checkout.d.ts +49 -1
  30. package/dist/payments/checkout.d.ts.map +1 -1
  31. package/dist/payments/checkout.js +9 -0
  32. package/dist/payments/checkout.js.map +1 -1
  33. package/dist/payments/fake-stripe.d.ts +37 -0
  34. package/dist/payments/fake-stripe.d.ts.map +1 -0
  35. package/dist/payments/fake-stripe.js +123 -0
  36. package/dist/payments/fake-stripe.js.map +1 -0
  37. package/dist/payments/stripe-checkout.d.ts +44 -0
  38. package/dist/payments/stripe-checkout.d.ts.map +1 -0
  39. package/dist/payments/stripe-checkout.js +166 -0
  40. package/dist/payments/stripe-checkout.js.map +1 -0
  41. package/dist/server.d.ts +2 -2
  42. package/dist/server.js +2 -2
  43. package/dist/surface.d.ts.map +1 -1
  44. package/dist/surface.js +34 -20
  45. package/dist/surface.js.map +1 -1
  46. package/dist/tools.d.ts.map +1 -1
  47. package/dist/tools.js +45 -23
  48. package/dist/tools.js.map +1 -1
  49. package/dist/types.d.ts +17 -0
  50. package/dist/types.d.ts.map +1 -1
  51. package/dist/vocab.d.ts +20 -0
  52. package/dist/vocab.d.ts.map +1 -1
  53. package/dist/vocab.js +25 -2
  54. package/dist/vocab.js.map +1 -1
  55. package/package.json +1 -1
@@ -0,0 +1,123 @@
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 state = { failNotes: false };
9
+ const refunds = new Map();
10
+ const calls = [];
11
+ let seq = 0;
12
+ const json = (status, body) => new Response(JSON.stringify(body), { status, headers: { 'content-type': 'application/json' } });
13
+ const err = (status, message) => json(status, { error: { message } });
14
+ const answered = new Map();
15
+ const handle = async (url, init) => {
16
+ const method = (init.method ?? 'GET').toUpperCase();
17
+ const path = url.pathname;
18
+ const form = Object.fromEntries(new URLSearchParams(String(init.body ?? '')));
19
+ const headers = new Headers(init.headers);
20
+ const key = headers.get('idempotency-key') ?? undefined;
21
+ calls.push({ method, path, form, ...(key ? { key } : {}) });
22
+ if (headers.get('authorization') !== `Bearer ${opts.apiKey}`)
23
+ return err(401, 'Invalid API Key provided');
24
+ // Stripe's own rule: a repeat of a key gets the first answer, nothing new.
25
+ const seen = key ? answered.get(key) : undefined;
26
+ if (seen)
27
+ return new Response(seen.body, { status: seen.status });
28
+ const res = await route(method, path, form);
29
+ if (key && method === 'POST')
30
+ answered.set(key, { status: res.status, body: await res.clone().text() });
31
+ return res;
32
+ };
33
+ const route = async (method, path, form) => {
34
+ if (method === 'POST' && path === '/v1/checkout/sessions') {
35
+ const amount = Number(form['line_items[0][price_data][unit_amount]']);
36
+ if (!(amount > 0))
37
+ return err(400, 'unit_amount must be positive');
38
+ const id = `cs_test_${++seq}`;
39
+ const s = {
40
+ id,
41
+ url: `https://checkout.stripe.com/c/pay/${id}`,
42
+ status: 'open',
43
+ payment_status: 'unpaid',
44
+ amount_total: amount,
45
+ currency: String(form['line_items[0][price_data][currency]']),
46
+ ...(form['metadata[ref]'] ? { ref: form['metadata[ref]'] } : {}),
47
+ expiresAt: Number(form.expires_at),
48
+ payment_intent: null,
49
+ };
50
+ sessions.set(id, s);
51
+ return json(200, s);
52
+ }
53
+ const sessionPath = /^\/v1\/checkout\/sessions\/([^/]+)(\/expire)?$/.exec(path);
54
+ if (sessionPath) {
55
+ const s = sessions.get(decodeURIComponent(sessionPath[1] ?? ''));
56
+ if (!s)
57
+ return err(404, 'No such checkout.session');
58
+ if (method === 'GET')
59
+ return json(200, s);
60
+ if (method === 'POST' && sessionPath[2]) {
61
+ if (s.status !== 'open')
62
+ return err(400, 'Only Checkout Sessions with a status of open can be expired.');
63
+ s.status = 'expired';
64
+ return json(200, s);
65
+ }
66
+ }
67
+ if (method === 'POST' && path === '/v1/refunds') {
68
+ const paid = [...sessions.values()].find((s) => s.payment_intent === form.payment_intent);
69
+ if (!paid || paid.status !== 'complete')
70
+ return err(400, 'No such payment_intent');
71
+ if ([...refunds.values()].some((r) => r.payment_intent === form.payment_intent))
72
+ return err(400, 'Charge has already been refunded.');
73
+ const id = `re_test_${++seq}`;
74
+ const r = { id, payment_intent: String(form.payment_intent), status: 'pending' };
75
+ refunds.set(id, r);
76
+ return json(200, r);
77
+ }
78
+ const intentPath = /^\/v1\/payment_intents\/([^/]+)$/.exec(path);
79
+ if (method === 'POST' && intentPath) {
80
+ if (state.failNotes)
81
+ return err(500, 'An unknown error occurred');
82
+ const paid = [...sessions.values()].find((x) => x.payment_intent === intentPath[1]);
83
+ return paid ? json(200, { id: intentPath[1] }) : err(404, 'No such payment_intent');
84
+ }
85
+ const refundPath = /^\/v1\/refunds\/([^/]+)$/.exec(path);
86
+ if (method === 'GET' && refundPath) {
87
+ const r = refunds.get(decodeURIComponent(refundPath[1] ?? ''));
88
+ return r ? json(200, r) : err(404, 'No such refund');
89
+ }
90
+ return err(404, `Unrecognized request URL (${method}: ${path})`);
91
+ };
92
+ return {
93
+ sessions,
94
+ refunds,
95
+ calls,
96
+ /** Make writing onto a payment fail - Stripe having a bad moment. */
97
+ get failNotes() {
98
+ return state.failNotes;
99
+ },
100
+ set failNotes(v) {
101
+ state.failNotes = v;
102
+ },
103
+ fetch: (async (input, init) => handle(new URL(String(input instanceof Request ? input.url : input)), init ?? {})),
104
+ /** The guest pays on the page - `amount` to make it take other than it asked (a fault). */
105
+ pay(id, amount) {
106
+ const s = sessions.get(id);
107
+ if (!s || s.status !== 'open')
108
+ throw new Error(`cannot pay ${id}`);
109
+ s.status = 'complete';
110
+ s.payment_status = 'paid';
111
+ if (amount !== undefined)
112
+ s.amount_total = amount;
113
+ s.payment_intent = `pi_test_${++seq}`;
114
+ },
115
+ /** The money arrives back on the card. */
116
+ settleRefunds() {
117
+ for (const r of refunds.values())
118
+ if (r.status === 'pending')
119
+ r.status = 'succeeded';
120
+ },
121
+ };
122
+ };
123
+ //# 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,44 @@
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
+ code?: string;
23
+ title: string;
24
+ amountMinor: number;
25
+ currency: string;
26
+ }): Promise<OpenedCheckout>;
27
+ state(sessionId: string): Promise<CheckoutState>;
28
+ /** Only a page Stripe calls paid - `payment_status: paid`, not `complete` alone. */
29
+ paidAmount(sessionId: string): Promise<{
30
+ amountMinor: number;
31
+ currency: string;
32
+ } | undefined>;
33
+ /** Expires an unpaid page; one paid in the last second answers `paid`, and that money is the caller's. */
34
+ close(sessionId: string): Promise<CheckoutState>;
35
+ /** All of it back - a refund of the payment the page took. */
36
+ refund(sessionId: string, reason: string, key?: string): Promise<{
37
+ requestId: string;
38
+ status: string;
39
+ }>;
40
+ /** Onto the PaymentIntent the page made - where the dashboard shows it beside the money. */
41
+ annotate(sessionId: string, notes: Record<string, string>): Promise<void>;
42
+ refundState(requestId: string): Promise<string>;
43
+ }
44
+ //# 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;YAW1C,IAAI;IAkClB,sEAAsE;IAChE,IAAI,CAAC,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,cAAc,CAAC;IAwCrB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAMtD,oFAAoF;IAC9E,UAAU,CACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAUjE,0GAA0G;IACpG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAgBtD,8DAA8D;IACxD,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAyBjD,4FAA4F;IACtF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAczE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOtD"}
@@ -0,0 +1,166 @@
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
+ // The test account's own key, shared with the gateway (robin, 2026-10-15:
37
+ // everything here is a test) - in test mode only.
38
+ if (!/^sk_test_/.test(opts.apiKey))
39
+ throw new CheckoutError('paying on Stripe directly takes a test-mode key only (sk_test_…) - no real card is charged here');
40
+ this.fetch = opts.fetch ?? globalThis.fetch;
41
+ this.base = (opts.apiBase ?? 'https://api.stripe.com').replace(/\/$/, '');
42
+ }
43
+ async call(method, path, form,
44
+ /** Stripe answers a repeat of this key with the first answer - never a second page or refund. */
45
+ idempotencyKey) {
46
+ let res;
47
+ try {
48
+ res = await this.fetch(`${this.base}${path}`, {
49
+ method,
50
+ headers: {
51
+ authorization: `Bearer ${this.opts.apiKey}`,
52
+ ...(form ? { 'content-type': 'application/x-www-form-urlencoded' } : {}),
53
+ ...(idempotencyKey ? { 'idempotency-key': idempotencyKey } : {}),
54
+ },
55
+ ...(form ? { body: new URLSearchParams(form).toString() } : {}),
56
+ signal: AbortSignal.timeout(this.opts.timeoutMs ?? 15_000),
57
+ });
58
+ }
59
+ catch (err) {
60
+ throw new CheckoutError(`Stripe did not answer (${err.message})`);
61
+ }
62
+ const text = await res.text();
63
+ if (!res.ok) {
64
+ // Stripe's own message, never the request: the key rides in a header.
65
+ let said = text.slice(0, 300);
66
+ try {
67
+ said = JSON.parse(text).error?.message ?? said;
68
+ }
69
+ catch { }
70
+ throw new CheckoutError(`Stripe answered ${res.status}: ${said}`, res.status);
71
+ }
72
+ return (text ? JSON.parse(text) : {});
73
+ }
74
+ /** A Checkout page for one stay, at the total the guest was shown. */
75
+ async open(o) {
76
+ const back = this.opts.returnUrl;
77
+ // The booking it pays for - our code and Huazhu's distributorResId, its own
78
+ // key for the order - on the page and on the payment, so Stripe's
79
+ // dashboard and Huazhu's order are matched at a glance (总线程, 2026-10-15).
80
+ const ids = {
81
+ // One Stripe account for the gateway and this connector: which it was.
82
+ 'metadata[source]': 'huazhu-mcp',
83
+ 'payment_intent_data[metadata][source]': 'huazhu-mcp',
84
+ 'metadata[distributor_res_id]': o.ref,
85
+ 'payment_intent_data[metadata][distributor_res_id]': o.ref,
86
+ ...(o.code
87
+ ? { 'metadata[booking]': o.code, 'payment_intent_data[metadata][booking]': o.code }
88
+ : {}),
89
+ };
90
+ const s = await this.call('POST', '/v1/checkout/sessions', {
91
+ mode: 'payment',
92
+ 'payment_method_types[0]': 'card',
93
+ 'line_items[0][quantity]': '1',
94
+ 'line_items[0][price_data][currency]': o.currency.toLowerCase(),
95
+ 'line_items[0][price_data][unit_amount]': String(o.amountMinor),
96
+ 'line_items[0][price_data][product_data][name]': o.title.slice(0, 200),
97
+ client_reference_id: o.ref,
98
+ 'metadata[ref]': o.ref,
99
+ 'payment_intent_data[metadata][ref]': o.ref,
100
+ ...ids,
101
+ success_url: `${back}${back.includes('?') ? '&' : '?'}paid=1`,
102
+ cancel_url: back,
103
+ expires_at: String(Math.floor(Date.now() / 1000) + PAGE_LIFE_S),
104
+ },
105
+ // One page a booking, however often it is asked for.
106
+ `hz-open-${o.ref}`);
107
+ if (!s?.id || !s.url)
108
+ throw new CheckoutError('Stripe opened no Checkout page');
109
+ return { sessionId: s.id, url: s.url };
110
+ }
111
+ async state(sessionId) {
112
+ return stateOf(await this.call('GET', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}`));
113
+ }
114
+ /** Only a page Stripe calls paid - `payment_status: paid`, not `complete` alone. */
115
+ async paidAmount(sessionId) {
116
+ const s = await this.call('GET', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}`);
117
+ if (stateOf(s) !== 'paid' || typeof s.amount_total !== 'number' || !s.currency)
118
+ return undefined;
119
+ return { amountMinor: s.amount_total, currency: s.currency.toUpperCase() };
120
+ }
121
+ /** Expires an unpaid page; one paid in the last second answers `paid`, and that money is the caller's. */
122
+ async close(sessionId) {
123
+ try {
124
+ return stateOf(await this.call('POST', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}/expire`, {}));
125
+ }
126
+ catch (err) {
127
+ // "Only Checkout Sessions with a status of open can be expired."
128
+ if (err instanceof CheckoutError && err.status === 400)
129
+ return this.state(sessionId);
130
+ throw err;
131
+ }
132
+ }
133
+ /** All of it back - a refund of the payment the page took. */
134
+ async refund(sessionId, reason, key) {
135
+ const s = await this.call('GET', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}`);
136
+ const intent = typeof s.payment_intent === 'string' ? s.payment_intent : s.payment_intent?.id;
137
+ if (!intent)
138
+ throw new CheckoutError('that Checkout page took no payment to give back');
139
+ const r = await this.call('POST', '/v1/refunds', {
140
+ payment_intent: intent,
141
+ reason: 'requested_by_customer',
142
+ 'metadata[why]': reason.slice(0, 450),
143
+ },
144
+ // One refund for each time the money is given back, however often that
145
+ // is asked for: keyed by the refund itself, not the payment alone - a
146
+ // second refund of the same payment (a fee kept, two parts) is not
147
+ // the first one again (总线程, 2026-10-15).
148
+ `hz-refund-${intent}-${key ?? 'full'}`);
149
+ if (!r?.id)
150
+ throw new CheckoutError('Stripe opened no refund');
151
+ return { requestId: r.id, status: REFUND[String(r.status)] ?? 'approved' };
152
+ }
153
+ /** Onto the PaymentIntent the page made - where the dashboard shows it beside the money. */
154
+ async annotate(sessionId, notes) {
155
+ const s = await this.call('GET', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}`);
156
+ const intent = typeof s.payment_intent === 'string' ? s.payment_intent : s.payment_intent?.id;
157
+ if (!intent)
158
+ throw new CheckoutError('that Checkout page has no payment to write on');
159
+ await this.call('POST', `/v1/payment_intents/${encodeURIComponent(intent)}`, Object.fromEntries(Object.entries(notes).map(([k, v]) => [`metadata[${k}]`, v])));
160
+ }
161
+ async refundState(requestId) {
162
+ const r = await this.call('GET', `/v1/refunds/${encodeURIComponent(requestId)}`);
163
+ return REFUND[String(r.status)] ?? 'approved';
164
+ }
165
+ }
166
+ //# 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/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.34.0";
31
+ export declare const VERSION = "0.35.1";
32
32
  /**
33
33
  * The card's resource URI.
34
34
  *
@@ -37,7 +37,7 @@ export declare const VERSION = "0.34.0";
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-v69.html";
40
+ export declare const CARD_URI = "ui://curless/hotel/booking-v71.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.34.0';
49
+ export const VERSION = '0.35.1';
50
50
  /**
51
51
  * The card's resource URI.
52
52
  *
@@ -55,7 +55,7 @@ export const VERSION = '0.34.0';
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-v69.html';
58
+ export const CARD_URI = 'ui://curless/hotel/booking-v71.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.
@@ -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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"}
@@ -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":"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"}