@curless/hotel-storefront 0.24.0 → 0.24.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.
- package/README.md +7 -0
- package/dist/__tests__/__fixtures__/huazhu-fake.d.ts +1 -53
- package/dist/__tests__/__fixtures__/huazhu-fake.d.ts.map +1 -1
- package/dist/__tests__/__fixtures__/huazhu-fake.js +2 -339
- package/dist/__tests__/__fixtures__/huazhu-fake.js.map +1 -1
- package/dist/__tests__/huazhu-sandbox.test.d.ts +2 -0
- package/dist/__tests__/huazhu-sandbox.test.d.ts.map +1 -0
- package/dist/__tests__/huazhu-sandbox.test.js +172 -0
- package/dist/__tests__/huazhu-sandbox.test.js.map +1 -0
- package/dist/__tests__/tool-descriptions.test.js +29 -4
- package/dist/__tests__/tool-descriptions.test.js.map +1 -1
- package/dist/config.d.ts +12 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/huazhu/fake.d.ts +64 -0
- package/dist/huazhu/fake.d.ts.map +1 -0
- package/dist/huazhu/fake.js +365 -0
- package/dist/huazhu/fake.js.map +1 -0
- package/dist/huazhu/sandbox.d.ts +26 -0
- package/dist/huazhu/sandbox.d.ts.map +1 -0
- package/dist/huazhu/sandbox.js +289 -0
- package/dist/huazhu/sandbox.js.map +1 -0
- package/dist/legal.d.ts.map +1 -1
- package/dist/legal.js +48 -22
- package/dist/legal.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.js +1 -1
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +5 -0
- package/dist/surface.js.map +1 -1
- package/dist/vocab.d.ts +5 -0
- package/dist/vocab.d.ts.map +1 -1
- package/dist/vocab.js +2 -1
- package/dist/vocab.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type Server } from 'node:http';
|
|
2
|
+
import { type FakeRate } from './fake.js';
|
|
3
|
+
import type { HotelStatic } from './wire.js';
|
|
4
|
+
/** The invented hotels, shaped as Huazhu's /hotel answers them. No photographs: none of them exists. */
|
|
5
|
+
export declare const SANDBOX_HOTELS: HotelStatic[];
|
|
6
|
+
/** Three rates a hotel, fifty rooms of each a night: enough for many test bookings, since these never lapse. */
|
|
7
|
+
export declare const SANDBOX_RATES: Record<string, FakeRate[]>;
|
|
8
|
+
export type SandboxOptions = {
|
|
9
|
+
/** Default: any free port. */
|
|
10
|
+
port?: number;
|
|
11
|
+
host?: string;
|
|
12
|
+
/** Where bookings and held rooms are written, so a restart keeps them. None: memory only. */
|
|
13
|
+
stateFile?: string;
|
|
14
|
+
/** The credentials it accepts - the same names the connector reads (HUAZHU_*). */
|
|
15
|
+
clientId?: string;
|
|
16
|
+
secret?: string;
|
|
17
|
+
distributorId?: string;
|
|
18
|
+
now?: () => number;
|
|
19
|
+
log?: (line: string) => void;
|
|
20
|
+
};
|
|
21
|
+
export declare const startSandbox: (o?: SandboxOptions) => Promise<{
|
|
22
|
+
server: Server;
|
|
23
|
+
port: number;
|
|
24
|
+
close: () => Promise<void>;
|
|
25
|
+
}>;
|
|
26
|
+
//# sourceMappingURL=sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/huazhu/sandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,WAAW,CAAC;AAItD,OAAO,EAAE,KAAK,QAAQ,EAAwD,MAAM,WAAW,CAAC;AAChG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AA4K7C,wGAAwG;AACxG,eAAO,MAAM,cAAc,EAAE,WAAW,EAuBvC,CAAC;AASF,gHAAgH;AAChH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAyBpD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6FAA6F;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B,CAAC;AAKF,eAAO,MAAM,YAAY,GACvB,IAAG,cAAmB,KACrB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CA0EtE,CAAC"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { readFileSync, renameSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { createServer } from 'node:http';
|
|
3
|
+
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { addDays } from '../dates.js';
|
|
5
|
+
import { createFakeHuazhu, fakeHotel, product } from './fake.js';
|
|
6
|
+
const SEEDS = [
|
|
7
|
+
{
|
|
8
|
+
id: '1001',
|
|
9
|
+
name: '汉庭酒店(上海人民广场店)',
|
|
10
|
+
en: "Hanting Hotel Shanghai People's Square",
|
|
11
|
+
brand: '汉庭',
|
|
12
|
+
brandCode: 2,
|
|
13
|
+
province: ['310000', '上海市'],
|
|
14
|
+
city: ['310100', '上海市'],
|
|
15
|
+
county: '黄浦区',
|
|
16
|
+
address: '上海市黄浦区延安东路1号',
|
|
17
|
+
addressEn: "1 Yan'an East Road, Huangpu District, Shanghai",
|
|
18
|
+
near: '人民广场',
|
|
19
|
+
services: [[49, '中餐厅']],
|
|
20
|
+
base: 289,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: '1002',
|
|
24
|
+
name: '全季酒店(上海外滩店)',
|
|
25
|
+
en: 'JI Hotel Shanghai The Bund',
|
|
26
|
+
brand: '全季',
|
|
27
|
+
brandCode: 3,
|
|
28
|
+
province: ['310000', '上海市'],
|
|
29
|
+
city: ['310100', '上海市'],
|
|
30
|
+
county: '黄浦区',
|
|
31
|
+
address: '上海市黄浦区中山东一路2号',
|
|
32
|
+
addressEn: '2 East Zhongshan Road No.1, Huangpu District, Shanghai',
|
|
33
|
+
near: '外滩',
|
|
34
|
+
services: [
|
|
35
|
+
[71, '健身房'],
|
|
36
|
+
[49, '中餐厅'],
|
|
37
|
+
],
|
|
38
|
+
base: 499,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: '2001',
|
|
42
|
+
name: '全季酒店(北京国贸店)',
|
|
43
|
+
en: 'JI Hotel Beijing Guomao',
|
|
44
|
+
brand: '全季',
|
|
45
|
+
brandCode: 3,
|
|
46
|
+
province: ['110000', '北京市'],
|
|
47
|
+
city: ['110100', '北京市'],
|
|
48
|
+
county: '朝阳区',
|
|
49
|
+
address: '北京市朝阳区建国路1号',
|
|
50
|
+
addressEn: '1 Jianguo Road, Chaoyang District, Beijing',
|
|
51
|
+
near: '国贸',
|
|
52
|
+
services: [
|
|
53
|
+
[73, '游泳池'],
|
|
54
|
+
[71, '健身房'],
|
|
55
|
+
],
|
|
56
|
+
base: 469,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: '2002',
|
|
60
|
+
name: '桔子酒店(北京三里屯店)',
|
|
61
|
+
en: 'Orange Hotel Beijing Sanlitun',
|
|
62
|
+
brand: '桔子',
|
|
63
|
+
brandCode: 7,
|
|
64
|
+
province: ['110000', '北京市'],
|
|
65
|
+
city: ['110100', '北京市'],
|
|
66
|
+
county: '朝阳区',
|
|
67
|
+
address: '北京市朝阳区三里屯路3号',
|
|
68
|
+
addressEn: '3 Sanlitun Road, Chaoyang District, Beijing',
|
|
69
|
+
near: '三里屯',
|
|
70
|
+
services: [[71, '健身房']],
|
|
71
|
+
base: 529,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
id: '3001',
|
|
75
|
+
name: '漫心酒店(杭州西湖店)',
|
|
76
|
+
en: 'Manxin Hotel Hangzhou West Lake',
|
|
77
|
+
brand: '漫心',
|
|
78
|
+
brandCode: 11,
|
|
79
|
+
province: ['330000', '浙江省'],
|
|
80
|
+
city: ['330100', '杭州市'],
|
|
81
|
+
county: '西湖区',
|
|
82
|
+
address: '浙江省杭州市西湖区北山街4号',
|
|
83
|
+
addressEn: '4 Beishan Street, Xihu District, Hangzhou',
|
|
84
|
+
near: '西湖',
|
|
85
|
+
services: [
|
|
86
|
+
[49, '中餐厅'],
|
|
87
|
+
[75, '水疗'],
|
|
88
|
+
],
|
|
89
|
+
base: 699,
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: '4001',
|
|
93
|
+
name: '汉庭酒店(深圳福田会展中心店)',
|
|
94
|
+
en: 'Hanting Hotel Shenzhen Futian Convention Centre',
|
|
95
|
+
brand: '汉庭',
|
|
96
|
+
brandCode: 2,
|
|
97
|
+
province: ['440000', '广东省'],
|
|
98
|
+
city: ['440300', '深圳市'],
|
|
99
|
+
county: '福田区',
|
|
100
|
+
address: '广东省深圳市福田区福华三路5号',
|
|
101
|
+
addressEn: '5 Fuhua 3rd Road, Futian District, Shenzhen',
|
|
102
|
+
near: '会展中心',
|
|
103
|
+
services: [],
|
|
104
|
+
base: 259,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: '5001',
|
|
108
|
+
name: '花间堂(成都宽窄巷子店)',
|
|
109
|
+
en: 'Blossom House Chengdu Kuanzhai Alley',
|
|
110
|
+
brand: '花间堂',
|
|
111
|
+
brandCode: 21,
|
|
112
|
+
province: ['510000', '四川省'],
|
|
113
|
+
city: ['510100', '成都市'],
|
|
114
|
+
county: '青羊区',
|
|
115
|
+
address: '四川省成都市青羊区宽巷子6号',
|
|
116
|
+
addressEn: '6 Kuan Alley, Qingyang District, Chengdu',
|
|
117
|
+
near: '宽窄巷子',
|
|
118
|
+
services: [
|
|
119
|
+
[49, '中餐厅'],
|
|
120
|
+
[75, '水疗'],
|
|
121
|
+
],
|
|
122
|
+
base: 899,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: '6001',
|
|
126
|
+
name: '美仑酒店(广州珠江新城店)',
|
|
127
|
+
en: 'Meilun Hotel Guangzhou Zhujiang New Town',
|
|
128
|
+
brand: '美仑',
|
|
129
|
+
brandCode: 15,
|
|
130
|
+
province: ['440000', '广东省'],
|
|
131
|
+
city: ['440100', '广州市'],
|
|
132
|
+
county: '天河区',
|
|
133
|
+
address: '广东省广州市天河区珠江东路7号',
|
|
134
|
+
addressEn: '7 Zhujiang East Road, Tianhe District, Guangzhou',
|
|
135
|
+
near: '珠江新城',
|
|
136
|
+
services: [
|
|
137
|
+
[73, '游泳池'],
|
|
138
|
+
[71, '健身房'],
|
|
139
|
+
[49, '中餐厅'],
|
|
140
|
+
],
|
|
141
|
+
base: 759,
|
|
142
|
+
},
|
|
143
|
+
];
|
|
144
|
+
/** The invented hotels, shaped as Huazhu's /hotel answers them. No photographs: none of them exists. */
|
|
145
|
+
export const SANDBOX_HOTELS = SEEDS.map((s) => fakeHotel(s.id, {
|
|
146
|
+
hotelName: `【模拟】${s.name}`,
|
|
147
|
+
hotelNameEn: `[Sandbox] ${s.en}`,
|
|
148
|
+
brandCode: s.brandCode,
|
|
149
|
+
brandName: s.brand,
|
|
150
|
+
provinceNo: s.province[0],
|
|
151
|
+
provinceName: s.province[1],
|
|
152
|
+
cityNo: s.city[0],
|
|
153
|
+
cityName: s.city[1],
|
|
154
|
+
countyName: s.county,
|
|
155
|
+
hotelAddress: s.address,
|
|
156
|
+
hotelAddressEn: s.addressEn,
|
|
157
|
+
hotelWordIntroduce: '模拟数据:这家酒店不存在,只用于测试连接器。',
|
|
158
|
+
hotelServiceList: s.services.map(([childClassCode, childClassName]) => ({
|
|
159
|
+
childClassCode,
|
|
160
|
+
childClassName,
|
|
161
|
+
})),
|
|
162
|
+
hotelPhotoList: [],
|
|
163
|
+
hotelTrafficList: [
|
|
164
|
+
{ destinationType: '9', destinationName: s.near, destinationDistance: '500m' },
|
|
165
|
+
],
|
|
166
|
+
}));
|
|
167
|
+
/** Friday and Saturday nights cost more, as they do at a city hotel. */
|
|
168
|
+
const weekend = (d) => {
|
|
169
|
+
const day = new Date(`${d}T00:00:00Z`).getUTCDay();
|
|
170
|
+
return day === 5 || day === 6;
|
|
171
|
+
};
|
|
172
|
+
const priced = (base) => (d) => Math.round(base * (weekend(d) ? 1.15 : 1));
|
|
173
|
+
/** Three rates a hotel, fifty rooms of each a night: enough for many test bookings, since these never lapse. */
|
|
174
|
+
export const SANDBOX_RATES = Object.fromEntries(SEEDS.map((s) => [
|
|
175
|
+
s.id,
|
|
176
|
+
[
|
|
177
|
+
{
|
|
178
|
+
product: product('DR1', 'BAR', { rateCodeName: '门市价' }),
|
|
179
|
+
price: priced(s.base),
|
|
180
|
+
inventory: () => 50,
|
|
181
|
+
cancel: '6PM1D1N_100P',
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
product: product('DR1', 'BARB', { rateCodeName: '门市价含早' }),
|
|
185
|
+
price: priced(s.base + 40),
|
|
186
|
+
inventory: () => 50,
|
|
187
|
+
meal: { type: 'BB', count: 1 },
|
|
188
|
+
cancel: '6PM1D1N_100P',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
product: product('TR1', 'BAR', { rateCodeName: '门市价' }),
|
|
192
|
+
price: priced(s.base + 20),
|
|
193
|
+
inventory: () => 50,
|
|
194
|
+
cancel: 'AD0_0',
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
]));
|
|
198
|
+
/** How long a booking is kept after its check-out, as the connector keeps its own copy. */
|
|
199
|
+
const KEEP_DAYS = 90;
|
|
200
|
+
export const startSandbox = (o = {}) => {
|
|
201
|
+
const now = o.now ?? Date.now;
|
|
202
|
+
const load = () => {
|
|
203
|
+
if (!o.stateFile)
|
|
204
|
+
return undefined;
|
|
205
|
+
try {
|
|
206
|
+
return JSON.parse(readFileSync(o.stateFile, 'utf8'));
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return undefined;
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
const initial = load();
|
|
213
|
+
const fake = createFakeHuazhu({
|
|
214
|
+
hotels: SANDBOX_HOTELS,
|
|
215
|
+
rates: SANDBOX_RATES,
|
|
216
|
+
now,
|
|
217
|
+
...(o.clientId ? { clientId: o.clientId } : {}),
|
|
218
|
+
...(o.secret ? { secret: o.secret } : {}),
|
|
219
|
+
...(o.distributorId ? { distributorId: o.distributorId } : {}),
|
|
220
|
+
...(initial ? { state: initial } : {}),
|
|
221
|
+
});
|
|
222
|
+
const save = () => {
|
|
223
|
+
if (!o.stateFile)
|
|
224
|
+
return;
|
|
225
|
+
const today = new Date(now() + 8 * 3_600_000).toISOString().slice(0, 10);
|
|
226
|
+
const state = fake.snapshot();
|
|
227
|
+
state.bookings = state.bookings.filter((b) => addDays(b.request.reservations[0].checkout, KEEP_DAYS) >= today);
|
|
228
|
+
const tmp = `${o.stateFile}.tmp`;
|
|
229
|
+
writeFileSync(tmp, JSON.stringify(state));
|
|
230
|
+
renameSync(tmp, o.stateFile);
|
|
231
|
+
};
|
|
232
|
+
const server = createServer(async (req, res) => {
|
|
233
|
+
const url = new URL(req.url ?? '/', 'http://sandbox');
|
|
234
|
+
if (req.method === 'GET' && url.pathname === '/healthz') {
|
|
235
|
+
res.writeHead(200, { 'content-type': 'application/json' });
|
|
236
|
+
res.end(JSON.stringify({ ok: true, sandbox: true, hotels: SANDBOX_HOTELS.length }));
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
const chunks = [];
|
|
240
|
+
for await (const c of req)
|
|
241
|
+
chunks.push(c);
|
|
242
|
+
const body = Buffer.concat(chunks).toString('utf8');
|
|
243
|
+
const headers = {};
|
|
244
|
+
for (const [k, v] of Object.entries(req.headers))
|
|
245
|
+
if (typeof v === 'string')
|
|
246
|
+
headers[k] = v;
|
|
247
|
+
try {
|
|
248
|
+
const answer = await fake.fetch(url.href, {
|
|
249
|
+
method: req.method ?? 'POST',
|
|
250
|
+
headers,
|
|
251
|
+
...(body ? { body } : {}),
|
|
252
|
+
});
|
|
253
|
+
if (url.pathname.startsWith('/reservation/'))
|
|
254
|
+
save();
|
|
255
|
+
const text = await answer.text();
|
|
256
|
+
res.writeHead(answer.status, {
|
|
257
|
+
'content-type': answer.headers.get('content-type') ?? 'application/json',
|
|
258
|
+
});
|
|
259
|
+
res.end(text);
|
|
260
|
+
// The path and the outcome only: the bodies carry guests' names and emails.
|
|
261
|
+
o.log?.(`${req.method} ${url.pathname} -> ${answer.status}`);
|
|
262
|
+
}
|
|
263
|
+
catch (err) {
|
|
264
|
+
res.writeHead(502, { 'content-type': 'text/plain' });
|
|
265
|
+
res.end('sandbox error');
|
|
266
|
+
o.log?.(`${req.method} ${url.pathname} -> error: ${err.message}`);
|
|
267
|
+
}
|
|
268
|
+
});
|
|
269
|
+
return new Promise((resolve) => {
|
|
270
|
+
server.listen(o.port ?? 0, o.host ?? '0.0.0.0', () => resolve({
|
|
271
|
+
server,
|
|
272
|
+
port: server.address().port,
|
|
273
|
+
close: () => new Promise((done) => server.close(() => done())),
|
|
274
|
+
}));
|
|
275
|
+
});
|
|
276
|
+
};
|
|
277
|
+
// `node dist/huazhu/sandbox.js` - the deployment's simulated Huazhu.
|
|
278
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
279
|
+
const env = process.env;
|
|
280
|
+
startSandbox({
|
|
281
|
+
port: Number(env.PORT ?? 8100),
|
|
282
|
+
...(env.SANDBOX_STATE_FILE ? { stateFile: env.SANDBOX_STATE_FILE } : {}),
|
|
283
|
+
...(env.HUAZHU_CLIENT_ID ? { clientId: env.HUAZHU_CLIENT_ID } : {}),
|
|
284
|
+
...(env.HUAZHU_CLIENT_SECRET ? { secret: env.HUAZHU_CLIENT_SECRET } : {}),
|
|
285
|
+
...(env.HUAZHU_DISTRIBUTOR_ID ? { distributorId: env.HUAZHU_DISTRIBUTOR_ID } : {}),
|
|
286
|
+
log: (l) => console.log(l),
|
|
287
|
+
}).then(({ port }) => console.log(`simulated Huazhu distributor API - NOT Huazhu - ${SANDBOX_HOTELS.length} invented hotels on :${port}`));
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=sandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/huazhu/sandbox.ts"],"names":[],"mappings":"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"}
|
package/dist/legal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legal.d.ts","sourceRoot":"","sources":["../src/legal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAqB,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"legal.d.ts","sourceRoot":"","sources":["../src/legal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,mBAAmB,EAAqB,MAAM,cAAc,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA8F/C,eAAO,MAAM,QAAQ,GACnB,QAAQ,WAAW,EACnB,OAAM,mBAAuC,KAC5C,MA0CA,CAAC;AAEJ,eAAO,MAAM,WAAW,GACtB,QAAQ,WAAW,EACnB,aAAY,MAAM,EAAO,EACzB,OAAM,mBAAuC,KAC5C,MAmFA,CAAC;AAEJ,eAAO,MAAM,SAAS,GACpB,QAAQ,WAAW,EACnB,OAAM,mBAAuC,KAC5C,MAiCA,CAAC"}
|
package/dist/legal.js
CHANGED
|
@@ -35,10 +35,22 @@ const footer = (config) => {
|
|
|
35
35
|
<br><a href="./docs">What this does</a> · <a href="./privacy">Privacy</a> · <a href="./terms">Terms</a>
|
|
36
36
|
</div>`;
|
|
37
37
|
};
|
|
38
|
-
/**
|
|
39
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Where the rooms come from: a demonstration file, a simulated copy of the
|
|
40
|
+
* group's system (a test deployment), or the group's own system. Every page
|
|
41
|
+
* that says who holds a booking asks this, never `data.source` alone - an api
|
|
42
|
+
* source can be the simulation.
|
|
43
|
+
*/
|
|
44
|
+
const sourceOf = (c) => c.data.source !== 'api' ? 'demo' : c.data.api?.sandbox ? 'sandbox' : 'live';
|
|
45
|
+
/** Said on every page, first, unless the rooms are the group's own. */
|
|
46
|
+
const demoBanner = (config) => sourceOf(config) === 'live'
|
|
40
47
|
? ''
|
|
41
|
-
:
|
|
48
|
+
: sourceOf(config) === 'sandbox'
|
|
49
|
+
? `<p><strong>This is a test environment.</strong> It answers from a simulated copy of
|
|
50
|
+
${esc(config.brand)}'s booking system, not from ${esc(config.brand)}: the hotels, rates, rooms and fees
|
|
51
|
+
were invented for testing, and nothing booked through it is a ${esc(config.brand)} reservation.
|
|
52
|
+
No room is held and no money changes hands.</p>`
|
|
53
|
+
: `<p><strong>This is a demonstration.</strong> The ${esc(config.brand)} properties named here are real, but
|
|
42
54
|
every rate, room count, add-on price and cancellation fee it answers with was made up for the demo.
|
|
43
55
|
Nothing booked through it reserves a real room, and no money changes hands.</p>`;
|
|
44
56
|
/**
|
|
@@ -49,13 +61,19 @@ const demoBanner = (config) => config.data.source === 'api'
|
|
|
49
61
|
* that say what this connector is are where that belongs - not in a comment in
|
|
50
62
|
* a data file. `operator` is who built it; the brand is not them.
|
|
51
63
|
*/
|
|
52
|
-
const marksNotice = (config) => config
|
|
53
|
-
? `<h2>Names
|
|
64
|
+
const marksNotice = (config) => sourceOf(config) === 'sandbox'
|
|
65
|
+
? `<h2>Names</h2>
|
|
66
|
+
<p>${esc(config.brand)} and the names of its brands belong to ${esc(config.brand)}. They are used here to
|
|
67
|
+
test a booking connector for ${esc(config.brand)} against a simulated copy of its distribution system,
|
|
68
|
+
before it is connected to the real one; the hotels shown are invented. This connector is operated by
|
|
69
|
+
${esc(config.legal.operator ?? 'Curless')}; it is not ${esc(config.brand)} and does not speak for it.</p>`
|
|
70
|
+
: sourceOf(config) === 'live'
|
|
71
|
+
? `<h2>Names and pictures</h2>
|
|
54
72
|
<p>${esc(config.brand)}, the names of its properties and the photographs shown on the card belong to
|
|
55
73
|
${esc(config.brand)}, and come from its own distribution system. This connector is operated by
|
|
56
74
|
${esc(config.legal.operator ?? 'Curless')}, which sells ${esc(config.brand)}'s rooms as a distributor;
|
|
57
75
|
it is not ${esc(config.brand)}.</p>`
|
|
58
|
-
|
|
76
|
+
: `<h2>Names and pictures</h2>
|
|
59
77
|
<p>${esc(config.brand)}, the names of its properties and the photographs shown on the card belong to
|
|
60
78
|
${esc(config.brand)}. They are used here to demonstrate a booking connector against the group's real
|
|
61
79
|
property list. This connector is operated by ${esc(config.legal.operator ?? 'Curless')} and is not
|
|
@@ -72,9 +90,11 @@ export const docsPage = (config, caps = FULL_CAPABILITIES) => shell('What this c
|
|
|
72
90
|
<li>Show one property's rooms for specific nights, with the stay total including taxes and fees,
|
|
73
91
|
the cancellation terms, and how many rooms are left.</li>
|
|
74
92
|
<li>Build a trip of room nights${caps.extras ? ' and add-ons' : ''}, and price it.</li>
|
|
75
|
-
<li>${
|
|
76
|
-
?
|
|
77
|
-
:
|
|
93
|
+
<li>${sourceOf(config) === 'sandbox'
|
|
94
|
+
? 'Book: each stay becomes a reservation in the simulated system, with its own confirmation code.'
|
|
95
|
+
: caps.booking === 'pay-at-hotel'
|
|
96
|
+
? `Book: each stay becomes ${esc(config.brand)}'s own reservation, with its own confirmation code, paid at the hotel.`
|
|
97
|
+
: 'Request a booking: the rooms are held and a confirmation code is issued.'}</li>
|
|
78
98
|
<li>Show what cancelling would cost before anything is cancelled, then cancel.</li>
|
|
79
99
|
<li>Answer from the property's own published policies.</li>
|
|
80
100
|
</ul>
|
|
@@ -98,9 +118,11 @@ export const privacyPage = (config, imageHosts = [], caps = FULL_CAPABILITIES) =
|
|
|
98
118
|
<li><strong>A booking you request</strong> — the name and email you gave, a phone number if you
|
|
99
119
|
gave one, the room requests (a bed type, a floor, a quiet, connecting or accessible room, an
|
|
100
120
|
early check-in or a late arrival), your arrival time and any note, the dates, rooms and price,
|
|
101
|
-
and the reason if you give one for cancelling. ${config
|
|
102
|
-
? `
|
|
103
|
-
:
|
|
121
|
+
and the reason if you give one for cancelling. ${sourceOf(config) === 'sandbox'
|
|
122
|
+
? `In this test environment it is sent to a simulated copy of ${esc(config.brand)}'s system that ${esc(config.legal.operator ?? 'Curless')} runs on the same server - never to ${esc(config.brand)} - and both keep it until 90 days after the check-out date, so that the booking can be found and cancelled from the conversation.`
|
|
123
|
+
: sourceOf(config) === 'live'
|
|
124
|
+
? `It is sent to ${esc(config.brand)}, who make and keep the reservation - the name, the email, the phone number, the dates, the rooms and the requests, which reach the hotel's desk. This connector also keeps a copy on its own server, until 90 days after the check-out date, so that the booking can be found and cancelled from the conversation: ${esc(config.brand)}'s system does not give back the email a booking was made with.`
|
|
125
|
+
: 'In this demonstration it is kept in memory for as long as this process runs, and nothing is written to disk; once there are many, bookings that are over are forgotten first.'}</li>
|
|
104
126
|
<li><strong>Who can open a booking.</strong> The conversation it was made in — and anyone who
|
|
105
127
|
gives its confirmation code together with the email it was made with, as a front desk would
|
|
106
128
|
ask. That pair lets the booking be read, ${caps.changes ? 'changed ' : ''}or cancelled, from another conversation too,
|
|
@@ -118,7 +140,7 @@ export const privacyPage = (config, imageHosts = [], caps = FULL_CAPABILITIES) =
|
|
|
118
140
|
the kind of room you prefer — a bed type, a floor, a quiet or connecting room — against the
|
|
119
141
|
membership number, and nothing else: never an accessible room (that is asked for on each
|
|
120
142
|
stay that needs it), a note, a name, an email, an arrival time or a card. It comes back the
|
|
121
|
-
next time that membership signs in, and "forget my preferences" removes it. ${config
|
|
143
|
+
next time that membership signs in, and "forget my preferences" removes it. ${sourceOf(config) === 'live'
|
|
122
144
|
? `It is kept on the membership's own profile with ${esc(config.brand)}.`
|
|
123
145
|
: 'In this demonstration it is kept in memory and does not survive a restart.'}</li>`
|
|
124
146
|
: ''}
|
|
@@ -155,17 +177,21 @@ export const termsPage = (config, caps = FULL_CAPABILITIES) => shell('Terms', co
|
|
|
155
177
|
${demoBanner(config)}
|
|
156
178
|
<h2>What this is</h2>
|
|
157
179
|
<p>A connector operated by ${esc(config.legal.operator ?? 'Curless')} that an AI assistant uses on
|
|
158
|
-
your behalf. ${config
|
|
159
|
-
?
|
|
160
|
-
:
|
|
180
|
+
your behalf. ${sourceOf(config) === 'sandbox'
|
|
181
|
+
? 'The hotels, rates and availability it shows come from a simulated booking system, for testing, and do not reserve anything.'
|
|
182
|
+
: sourceOf(config) === 'live'
|
|
183
|
+
? `The rooms, rates and policies come from ${esc(config.brand)}; the booking is between you and them.`
|
|
184
|
+
: 'The rates and availability it shows are demonstration values and do not reserve anything.'}</p>
|
|
161
185
|
<h2>Bookings</h2>
|
|
162
|
-
<p>${config
|
|
163
|
-
?
|
|
164
|
-
:
|
|
165
|
-
?
|
|
166
|
-
:
|
|
186
|
+
<p>${sourceOf(config) === 'sandbox'
|
|
187
|
+
? `In this test environment a booking is made in a simulated copy of ${esc(config.brand)}'s system: it reserves no room, and nothing is paid.`
|
|
188
|
+
: config.payment?.mode === 'wallet'
|
|
189
|
+
? 'A booking is confirmed once payment completes. Until then the rooms are held only.'
|
|
190
|
+
: caps.booking === 'pay-at-hotel'
|
|
191
|
+
? `A booking is ${esc(config.brand)}'s own reservation, made in your name and paid at the hotel under its terms; this connector takes no payment. A booking whose confirmation has not come back from ${esc(config.brand)} is said to be waiting until it has.`
|
|
192
|
+
: 'A booking request holds rooms; it takes no payment and is not a confirmed reservation. The hold lapses at the time stated on the confirmation.'} Cancellation terms are the property's own, and are shown in full before anything is cancelled.</p>
|
|
167
193
|
<h2>No warranty</h2>
|
|
168
|
-
<p>This connector is provided as is. ${config
|
|
194
|
+
<p>This connector is provided as is. ${sourceOf(config) === 'live'
|
|
169
195
|
? 'Rates and availability can change between a quote and a booking.'
|
|
170
196
|
: 'Nothing it shows is a rate anyone can book.'}</p>
|
|
171
197
|
${marksNotice(config)}
|
package/dist/legal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legal.js","sourceRoot":"","sources":["../src/legal.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAG3E,wEAAwE;AACxE,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,gFAAgF;AAChF,wDAAwD;AAExD,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,IAAY,EAAU,EAAE,CAAC;;;SAG7D,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC;;;;;;;;;;;;;;6BAcN,IAAI;CAChC,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,CAAU,EAAU,EAAE,CACjC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAC/F,CAAC;AAEJ,MAAM,MAAM,GAAG,CAAC,MAAmB,EAAU,EAAE;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC;IACpD,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;IAC7C,OAAO;kBACS,GAAG,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,sBAAsB,GAAG,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;MACpG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;MAC3D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;;SAEvE,CAAC;AACV,CAAC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"legal.js","sourceRoot":"","sources":["../src/legal.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare const PROTOCOL_VERSION = "2025-06-18";
|
|
|
16
16
|
* number. Found by reading the boot banner of a container that had just been
|
|
17
17
|
* deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
|
|
18
18
|
*/
|
|
19
|
-
export declare const VERSION = "0.24.
|
|
19
|
+
export declare const VERSION = "0.24.1";
|
|
20
20
|
/**
|
|
21
21
|
* The card's resource URI.
|
|
22
22
|
*
|
package/dist/server.js
CHANGED
|
@@ -35,7 +35,7 @@ export const PROTOCOL_VERSION = '2025-06-18';
|
|
|
35
35
|
* number. Found by reading the boot banner of a container that had just been
|
|
36
36
|
* deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
|
|
37
37
|
*/
|
|
38
|
-
export const VERSION = '0.24.
|
|
38
|
+
export const VERSION = '0.24.1';
|
|
39
39
|
/**
|
|
40
40
|
* The card's resource URI.
|
|
41
41
|
*
|
package/dist/surface.d.ts.map
CHANGED
|
@@ -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,EAAE,MAAM,YAAY,CAAC;AAY3D;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,aAAa,EACpB,OAAM,mBAAuC,KAC5C,
|
|
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,EAAE,MAAM,YAAY,CAAC;AAY3D;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAC5B,OAAO,aAAa,EACpB,OAAM,mBAAuC,KAC5C,MAuHF,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;;;;;;;;;;;;;;;KAexC,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
|
@@ -38,6 +38,11 @@ export const buildInstructions = (brand, caps = FULL_CAPABILITIES) => {
|
|
|
38
38
|
`⚠️ ${DEMO_NOTE} Say so the first time you quote a price, and never imply a room can actually be occupied.`,
|
|
39
39
|
]
|
|
40
40
|
: []),
|
|
41
|
+
...(v.sandbox
|
|
42
|
+
? [
|
|
43
|
+
`⚠️ THIS IS A TEST ENVIRONMENT. The ${v.nounPlural}, rates and bookings come from a simulated copy of ${v.brand}'s booking system, not from ${v.brand}: a booking made here is not a ${v.brand} reservation, holds no real room and is paid by nobody. Say so whenever you report a booking.`,
|
|
44
|
+
]
|
|
45
|
+
: []),
|
|
41
46
|
// ⚠️ "ONCE AND STOP" USED TO BE ABSOLUTE, and it silently outranked the two
|
|
42
47
|
// judgment cards: asked "compare the Hong Kong ones" and "plan me four
|
|
43
48
|
// days", the model listed the hotels and stopped, exactly as told
|
package/dist/surface.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
|
package/dist/vocab.d.ts
CHANGED
|
@@ -21,6 +21,11 @@ export type Vocabulary = {
|
|
|
21
21
|
* what `openWorldHint` claims about these tools.
|
|
22
22
|
*/
|
|
23
23
|
demo: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* A test deployment against a simulated booking system (`data.api.sandbox`).
|
|
26
|
+
* Always `demo` too; this says the hotels themselves are made up as well.
|
|
27
|
+
*/
|
|
28
|
+
sandbox?: boolean;
|
|
24
29
|
};
|
|
25
30
|
export type ResolvedBrand = {
|
|
26
31
|
config: HotelConfig;
|
package/dist/vocab.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocab.d.ts","sourceRoot":"","sources":["../src/vocab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAa,MAAM,aAAa,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC;;;;;OAKG;IACH,IAAI,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"vocab.d.ts","sourceRoot":"","sources":["../src/vocab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAa,MAAM,aAAa,CAAC;AAE1E;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IACzC;;;;;OAKG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,WAAW,KAAG,aAWjD,CAAC;AAEH,qGAAqG;AACrG,eAAO,MAAM,SAAS,mJAC4H,CAAC"}
|
package/dist/vocab.js
CHANGED
|
@@ -7,7 +7,8 @@ export const resolveBrand = (config) => ({
|
|
|
7
7
|
noun: config.naming?.noun ?? 'hotel',
|
|
8
8
|
nounPlural: config.naming?.nounPlural ?? `${config.naming?.noun ?? 'hotel'}s`,
|
|
9
9
|
hints: config.hints ?? {},
|
|
10
|
-
demo: config.data.source !== 'api',
|
|
10
|
+
demo: config.data.source !== 'api' || !!config.data.api?.sandbox,
|
|
11
|
+
sandbox: config.data.source === 'api' && !!config.data.api?.sandbox,
|
|
11
12
|
},
|
|
12
13
|
});
|
|
13
14
|
/** What the card and the text say about demonstration data, in one place so they cannot disagree. */
|
package/dist/vocab.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vocab.js","sourceRoot":"","sources":["../src/vocab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"vocab.js","sourceRoot":"","sources":["../src/vocab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,SAAS,EAAE,MAAM,aAAa,CAAC;AAqC1E,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAmB,EAAiB,EAAE,CAAC,CAAC;IACnE,MAAM;IACN,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC;IACxB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,OAAO;QACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,OAAO,GAAG;QAC7E,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO;QAChE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO;KACpE;CACF,CAAC,CAAC;AAEH,qGAAqG;AACrG,MAAM,CAAC,MAAM,SAAS,GACpB,gJAAgJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@curless/hotel-storefront",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "One hotel-booking MCP connector, driven by a config file. Brand, tool names, vocabulary and where the rooms come from live in a HotelConfig, so the second hotel group is a JSON file rather than a fork.",
|
|
6
6
|
"keywords": [
|