@curless/hotel-storefront 0.1.0 → 0.3.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.
- package/dist/__tests__/card-contract.test.js +13 -0
- package/dist/__tests__/card-contract.test.js.map +1 -1
- package/dist/__tests__/data.test.js +79 -3
- package/dist/__tests__/data.test.js.map +1 -1
- package/dist/__tests__/demo-hotels.test.js +52 -11
- package/dist/__tests__/demo-hotels.test.js.map +1 -1
- package/dist/__tests__/present.test.d.ts +2 -0
- package/dist/__tests__/present.test.d.ts.map +1 -0
- package/dist/__tests__/present.test.js +151 -0
- package/dist/__tests__/present.test.js.map +1 -0
- package/dist/__tests__/server.test.js +63 -4
- package/dist/__tests__/server.test.js.map +1 -1
- package/dist/__tests__/tools.test.js +154 -0
- package/dist/__tests__/tools.test.js.map +1 -1
- package/dist/backend.d.ts +40 -6
- package/dist/backend.d.ts.map +1 -1
- package/dist/backend.js +23 -1
- package/dist/backend.js.map +1 -1
- package/dist/card.generated.d.ts +1 -1
- package/dist/card.generated.js +2 -2
- package/dist/card.generated.js.map +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +7 -0
- package/dist/config.js.map +1 -1
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +118 -13
- package/dist/data.js.map +1 -1
- package/dist/demo-hotels.d.ts +40 -1
- package/dist/demo-hotels.d.ts.map +1 -1
- package/dist/demo-hotels.js +162 -13
- package/dist/demo-hotels.js.map +1 -1
- package/dist/fence.d.ts +9 -3
- package/dist/fence.d.ts.map +1 -1
- package/dist/fence.js +0 -0
- package/dist/fence.js.map +1 -1
- package/dist/index.js +0 -0
- package/dist/legal.d.ts.map +1 -1
- package/dist/legal.js +15 -0
- package/dist/legal.js.map +1 -1
- package/dist/members.d.ts +14 -0
- package/dist/members.d.ts.map +1 -0
- package/dist/members.js +56 -0
- package/dist/members.js.map +1 -0
- package/dist/present.d.ts +141 -0
- package/dist/present.d.ts.map +1 -0
- package/dist/present.js +197 -0
- package/dist/present.js.map +1 -0
- package/dist/server.d.ts +27 -10
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +27 -7
- package/dist/server.js.map +1 -1
- package/dist/surface.d.ts.map +1 -1
- package/dist/surface.js +27 -2
- package/dist/surface.js.map +1 -1
- package/dist/tools.d.ts +175 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +485 -51
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +68 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/vocab.d.ts +1 -1
- package/dist/vocab.d.ts.map +1 -1
- package/dist/vocab.js +1 -1
- package/dist/vocab.js.map +1 -1
- package/package.json +11 -9
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { HotelBackend } from './backend.js';
|
|
2
|
+
import type { Hotel, Stay, TripLine } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* The two cards that carry the MODEL's judgment rather than a tool's answer.
|
|
5
|
+
*
|
|
6
|
+
* ⚠️ THE CONTRACT, borrowed from Anthropic's commerce-agents reference and
|
|
7
|
+
* worth stating in full because every line of this file follows from it:
|
|
8
|
+
*
|
|
9
|
+
* The model's arguments carry its judgment - which hotels, in what order,
|
|
10
|
+
* the reason for each. THE SERVER JOINS EVERY FACT. The card never renders
|
|
11
|
+
* a model-authored value.
|
|
12
|
+
*
|
|
13
|
+
* So `compare` takes ids and prose and nothing else: no prices, no ratings, no
|
|
14
|
+
* room names. If the model could send a price, then one day it would send a
|
|
15
|
+
* price that is not the price, and a guest would read it off a card that looks
|
|
16
|
+
* official. It cannot send one, so it cannot be wrong about one.
|
|
17
|
+
*
|
|
18
|
+
* ⚠️ AND AN ID WITH NO ANSWER IS DROPPED, LOUDLY. The reference calls this
|
|
19
|
+
* provenance and checks the ids against what the session has actually seen; we
|
|
20
|
+
* check against the backend itself, which is stricter about existence and
|
|
21
|
+
* looser about history - our catalogue is fixed and small, so a hotel the model
|
|
22
|
+
* names without looking it up first is still a real hotel. What both refuse is
|
|
23
|
+
* the same thing: an id nobody can resolve, quietly rendered as a blank column.
|
|
24
|
+
* The dropped ones come back in the answer BY NAME so the model can correct
|
|
25
|
+
* itself rather than wonder why its card is short.
|
|
26
|
+
*/
|
|
27
|
+
export type ComparisonAsk = {
|
|
28
|
+
hotel: string;
|
|
29
|
+
/** The model's one-line reason. Its judgment, and the only thing it writes here. */
|
|
30
|
+
bestFor?: string;
|
|
31
|
+
pros?: string[];
|
|
32
|
+
cons?: string[];
|
|
33
|
+
};
|
|
34
|
+
export type ComparedColumn = {
|
|
35
|
+
hotel: Hotel;
|
|
36
|
+
bestFor?: string;
|
|
37
|
+
pros: string[];
|
|
38
|
+
cons: string[];
|
|
39
|
+
recommended: boolean;
|
|
40
|
+
/** Priced only when the ask carried dates - a room has no price without them. */
|
|
41
|
+
price?: {
|
|
42
|
+
nightly: string;
|
|
43
|
+
stayTotal: string;
|
|
44
|
+
room: string;
|
|
45
|
+
refundable: boolean;
|
|
46
|
+
roomsLeft: number;
|
|
47
|
+
};
|
|
48
|
+
from?: string;
|
|
49
|
+
/** What this column's prices are in, so a mixed table can be named as one. */
|
|
50
|
+
currency?: string;
|
|
51
|
+
/** The rows under the columns, in one order for every column, so they line up. */
|
|
52
|
+
rows: {
|
|
53
|
+
label: string;
|
|
54
|
+
value: string;
|
|
55
|
+
}[];
|
|
56
|
+
};
|
|
57
|
+
export type Comparison = {
|
|
58
|
+
title?: string;
|
|
59
|
+
stay?: Stay;
|
|
60
|
+
columns: ComparedColumn[];
|
|
61
|
+
/**
|
|
62
|
+
* ⚠️ THE SAME ROWS, IN THE SAME ORDER, FOR EVERY COLUMN.
|
|
63
|
+
*
|
|
64
|
+
* A comparison is read ACROSS - "per night" has to sit on one line all the
|
|
65
|
+
* way over, or the guest is comparing two numbers that are not beside each
|
|
66
|
+
* other. The first version let each column carry its own rows and they
|
|
67
|
+
* drifted apart the moment one hotel had a rating and another did not. The
|
|
68
|
+
* union is computed here, and a column with no value for a row gets an
|
|
69
|
+
* em dash: a gap that is visible beats a row that quietly moved.
|
|
70
|
+
*/
|
|
71
|
+
rowLabels: string[];
|
|
72
|
+
dropped: {
|
|
73
|
+
name: string;
|
|
74
|
+
why: string;
|
|
75
|
+
}[];
|
|
76
|
+
/**
|
|
77
|
+
* The currencies the priced rows are in, when there is more than one.
|
|
78
|
+
*
|
|
79
|
+
* ⚠️ A COMPARISON IS READ AS A RANKING. Once the group's whole map is in the
|
|
80
|
+
* data, "€1,060 · ¥67,500 · HK$3,800" can sit on one "Per night" line, and a
|
|
81
|
+
* guest reading across sees Tokyo costing sixty times Paris. Nothing here
|
|
82
|
+
* converts them - no rate is invented anywhere in this connector - so the
|
|
83
|
+
* card says out loud that these are different currencies.
|
|
84
|
+
*/
|
|
85
|
+
currencies?: string[];
|
|
86
|
+
};
|
|
87
|
+
export declare const MAX_COMPARED = 4;
|
|
88
|
+
export declare const MAX_PROS = 4;
|
|
89
|
+
export declare const MAX_CONS = 3;
|
|
90
|
+
export declare const compareHotels: (backend: HotelBackend, asks: ComparisonAsk[], opts: {
|
|
91
|
+
stay?: Stay;
|
|
92
|
+
recommended?: string;
|
|
93
|
+
title?: string;
|
|
94
|
+
}) => Promise<Comparison>;
|
|
95
|
+
export type ItineraryAsk = {
|
|
96
|
+
label: string;
|
|
97
|
+
note?: string;
|
|
98
|
+
/** Hotels and add-ons by id or name, in the order the model wants them shown. */
|
|
99
|
+
items?: string[];
|
|
100
|
+
};
|
|
101
|
+
export type ItineraryItem = {
|
|
102
|
+
kind: 'hotel' | 'extra';
|
|
103
|
+
id: string;
|
|
104
|
+
name: string;
|
|
105
|
+
detail?: string;
|
|
106
|
+
price?: string;
|
|
107
|
+
/**
|
|
108
|
+
* ⚠️ THE FIELD THIS WHOLE CARD EXISTS FOR.
|
|
109
|
+
*
|
|
110
|
+
* An itinerary is a PLAN; the trip is what has actually been added. Those
|
|
111
|
+
* two drift apart in one turn - the model lays out four days and the guest
|
|
112
|
+
* has added one room - and a plan card that does not say so reads as a
|
|
113
|
+
* booking. This is computed from the trip, not written by the model.
|
|
114
|
+
*/
|
|
115
|
+
inTrip: boolean;
|
|
116
|
+
};
|
|
117
|
+
export type ItineraryDay = {
|
|
118
|
+
label: string;
|
|
119
|
+
note?: string;
|
|
120
|
+
items: ItineraryItem[];
|
|
121
|
+
};
|
|
122
|
+
export type Itinerary = {
|
|
123
|
+
title: string;
|
|
124
|
+
stay?: Stay;
|
|
125
|
+
days: ItineraryDay[];
|
|
126
|
+
/** How much of the plan is actually in the trip. Counted here so nobody has to trust prose. */
|
|
127
|
+
inTrip: number;
|
|
128
|
+
planned: number;
|
|
129
|
+
dropped: {
|
|
130
|
+
name: string;
|
|
131
|
+
why: string;
|
|
132
|
+
}[];
|
|
133
|
+
};
|
|
134
|
+
export declare const MAX_DAYS = 10;
|
|
135
|
+
export declare const MAX_ITEMS_PER_DAY = 6;
|
|
136
|
+
export declare const buildItinerary: (backend: HotelBackend, days: ItineraryAsk[], opts: {
|
|
137
|
+
title: string;
|
|
138
|
+
stay?: Stay;
|
|
139
|
+
trip: TripLine[];
|
|
140
|
+
}) => Promise<Itinerary>;
|
|
141
|
+
//# sourceMappingURL=present.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"present.d.ts","sourceRoot":"","sources":["../src/present.ts"],"names":[],"mappings":"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"}
|
package/dist/present.js
ADDED
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { DESCRIPTION_MAX, hotelText } from './fence.js';
|
|
2
|
+
import { formatMoney } from './money.js';
|
|
3
|
+
export const MAX_COMPARED = 4;
|
|
4
|
+
export const MAX_PROS = 4;
|
|
5
|
+
export const MAX_CONS = 3;
|
|
6
|
+
const REASON_MAX = 160;
|
|
7
|
+
const trimList = (raw, max) => Array.isArray(raw)
|
|
8
|
+
? raw
|
|
9
|
+
.filter((s) => typeof s === 'string' && s.trim() !== '')
|
|
10
|
+
.slice(0, max)
|
|
11
|
+
.map((s) => s.trim().slice(0, REASON_MAX))
|
|
12
|
+
: [];
|
|
13
|
+
/** The cheapest room that sleeps the party, which is what a from-price means. */
|
|
14
|
+
const cheapest = (rooms) => rooms.reduce((best, r) => (!best || r.stayTotal.minor < best.stayTotal.minor ? r : best), undefined);
|
|
15
|
+
export const compareHotels = async (backend, asks, opts) => {
|
|
16
|
+
const columns = [];
|
|
17
|
+
const dropped = [];
|
|
18
|
+
for (const ask of asks.slice(0, MAX_COMPARED)) {
|
|
19
|
+
const detail = await backend.getHotel(ask.hotel, opts.stay);
|
|
20
|
+
if (!detail) {
|
|
21
|
+
dropped.push({ name: ask.hotel, why: 'no hotel here answers to that' });
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const h = detail.hotel;
|
|
25
|
+
const best = detail.rooms ? cheapest(detail.rooms) : undefined;
|
|
26
|
+
const column = {
|
|
27
|
+
hotel: { ...h, summary: hotelText('description', h.name, h.summary, DESCRIPTION_MAX).text },
|
|
28
|
+
bestFor: typeof ask.bestFor === 'string' ? ask.bestFor.trim().slice(0, REASON_MAX) : undefined,
|
|
29
|
+
pros: trimList(ask.pros, MAX_PROS),
|
|
30
|
+
cons: trimList(ask.cons, MAX_CONS),
|
|
31
|
+
recommended: !!opts.recommended && (opts.recommended === h.id || opts.recommended === ask.hotel),
|
|
32
|
+
...(best
|
|
33
|
+
? {
|
|
34
|
+
price: {
|
|
35
|
+
nightly: formatMoney(best.nightly),
|
|
36
|
+
stayTotal: formatMoney(best.stayTotal),
|
|
37
|
+
room: best.name,
|
|
38
|
+
refundable: best.refundable,
|
|
39
|
+
roomsLeft: best.roomsLeft,
|
|
40
|
+
},
|
|
41
|
+
}
|
|
42
|
+
: {}),
|
|
43
|
+
...(h.fromNightly ? { from: formatMoney(h.fromNightly) } : {}),
|
|
44
|
+
currency: best?.stayTotal.currency ?? h.fromNightly?.currency,
|
|
45
|
+
rows: [],
|
|
46
|
+
};
|
|
47
|
+
// The rows are OURS, every one of them read off the hotel or the room. The
|
|
48
|
+
// model chooses which hotels sit beside each other; it does not get to
|
|
49
|
+
// choose what a column says about them.
|
|
50
|
+
column.rows = [
|
|
51
|
+
{ label: 'Where', value: [h.area, h.city].filter(Boolean).join(', ') },
|
|
52
|
+
{ label: 'Brand', value: h.brand },
|
|
53
|
+
...(best
|
|
54
|
+
? [
|
|
55
|
+
{ label: 'Room', value: best.name },
|
|
56
|
+
{ label: 'Per night', value: formatMoney(best.nightly) },
|
|
57
|
+
{ label: 'Whole stay', value: `${formatMoney(best.stayTotal)} incl. tax` },
|
|
58
|
+
{ label: 'Free cancellation', value: best.refundable ? 'Yes' : 'No' },
|
|
59
|
+
{ label: 'Breakfast', value: best.breakfast ? 'Included' : 'Not included' },
|
|
60
|
+
{ label: 'Sleeps', value: String(best.sleeps) },
|
|
61
|
+
{ label: 'Rooms left', value: String(best.roomsLeft) },
|
|
62
|
+
]
|
|
63
|
+
: [
|
|
64
|
+
{ label: 'From', value: h.fromNightly ? `${formatMoney(h.fromNightly)} a night` : '—' },
|
|
65
|
+
]),
|
|
66
|
+
...(h.rating
|
|
67
|
+
? [
|
|
68
|
+
{
|
|
69
|
+
label: 'Rating',
|
|
70
|
+
value: `${h.rating.value} / ${h.rating.scaleMax} (${h.rating.count})`,
|
|
71
|
+
},
|
|
72
|
+
]
|
|
73
|
+
: []),
|
|
74
|
+
];
|
|
75
|
+
columns.push(column);
|
|
76
|
+
if (detail.noRooms && opts.stay) {
|
|
77
|
+
dropped.push({ name: h.name, why: detail.noRooms });
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// The union of every column's labels, in the order they were first built -
|
|
81
|
+
// which is the order they are meaningful in, not alphabetical.
|
|
82
|
+
const rowLabels = [];
|
|
83
|
+
for (const c of columns) {
|
|
84
|
+
for (const r of c.rows)
|
|
85
|
+
if (!rowLabels.includes(r.label))
|
|
86
|
+
rowLabels.push(r.label);
|
|
87
|
+
}
|
|
88
|
+
for (const c of columns) {
|
|
89
|
+
const byLabel = new Map(c.rows.map((r) => [r.label, r.value]));
|
|
90
|
+
c.rows = rowLabels.map((label) => ({ label, value: byLabel.get(label) ?? '—' }));
|
|
91
|
+
}
|
|
92
|
+
// What the priced rows are denominated in. One currency is the ordinary case
|
|
93
|
+
// and says nothing; two or more is a fact about how the table must be read.
|
|
94
|
+
const currencies = [
|
|
95
|
+
...new Set(columns
|
|
96
|
+
.map((c) => c.currency)
|
|
97
|
+
.filter((cur) => typeof cur === 'string' && cur !== '')),
|
|
98
|
+
];
|
|
99
|
+
return {
|
|
100
|
+
title: typeof opts.title === 'string' ? opts.title.trim().slice(0, 80) : undefined,
|
|
101
|
+
stay: opts.stay,
|
|
102
|
+
columns,
|
|
103
|
+
rowLabels,
|
|
104
|
+
dropped,
|
|
105
|
+
...(currencies.length > 1 ? { currencies } : {}),
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
export const MAX_DAYS = 10;
|
|
109
|
+
export const MAX_ITEMS_PER_DAY = 6;
|
|
110
|
+
const LABEL_MAX = 80;
|
|
111
|
+
const NOTE_MAX = 280;
|
|
112
|
+
export const buildItinerary = async (backend, days, opts) => {
|
|
113
|
+
const dropped = [];
|
|
114
|
+
const out = [];
|
|
115
|
+
const heldHotels = new Set(opts.trip.filter((l) => l.kind === 'room').map((l) => l.hotelId));
|
|
116
|
+
const heldExtras = new Set(opts.trip.flatMap((l) => (l.kind === 'extra' ? [`${l.hotelId}:${l.extraId}`] : [])));
|
|
117
|
+
// An add-on's id is only unique within its hotel, so a plan naming one has to
|
|
118
|
+
// be read against the hotels the same plan names.
|
|
119
|
+
const hotelsNamed = [];
|
|
120
|
+
let planned = 0;
|
|
121
|
+
let inTrip = 0;
|
|
122
|
+
for (const day of days.slice(0, MAX_DAYS)) {
|
|
123
|
+
const label = String(day.label ?? '')
|
|
124
|
+
.trim()
|
|
125
|
+
.slice(0, LABEL_MAX);
|
|
126
|
+
if (!label)
|
|
127
|
+
continue;
|
|
128
|
+
const items = [];
|
|
129
|
+
for (const ref of (day.items ?? []).slice(0, MAX_ITEMS_PER_DAY)) {
|
|
130
|
+
if (typeof ref !== 'string' || !ref.trim())
|
|
131
|
+
continue;
|
|
132
|
+
const hotel = await backend.getHotel(ref);
|
|
133
|
+
if (hotel) {
|
|
134
|
+
hotelsNamed.push(hotel.hotel.id);
|
|
135
|
+
const held = heldHotels.has(hotel.hotel.id);
|
|
136
|
+
items.push({
|
|
137
|
+
kind: 'hotel',
|
|
138
|
+
id: hotel.hotel.id,
|
|
139
|
+
name: hotel.hotel.name,
|
|
140
|
+
detail: [hotel.hotel.area, hotel.hotel.city].filter(Boolean).join(', '),
|
|
141
|
+
...(hotel.hotel.fromNightly
|
|
142
|
+
? { price: `${formatMoney(hotel.hotel.fromNightly)} a night` }
|
|
143
|
+
: {}),
|
|
144
|
+
inTrip: held,
|
|
145
|
+
});
|
|
146
|
+
planned += 1;
|
|
147
|
+
if (held)
|
|
148
|
+
inTrip += 1;
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const extra = await findExtra(backend, hotelsNamed, ref);
|
|
152
|
+
if (extra) {
|
|
153
|
+
const held = heldExtras.has(`${extra.hotelId}:${extra.id}`);
|
|
154
|
+
items.push({
|
|
155
|
+
kind: 'extra',
|
|
156
|
+
id: extra.id,
|
|
157
|
+
name: extra.name,
|
|
158
|
+
detail: hotelText('add-on', extra.hotelId, extra.description, DESCRIPTION_MAX).text,
|
|
159
|
+
price: `${formatMoney(extra.price)} per ${extra.per}`,
|
|
160
|
+
inTrip: held,
|
|
161
|
+
});
|
|
162
|
+
planned += 1;
|
|
163
|
+
if (held)
|
|
164
|
+
inTrip += 1;
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
dropped.push({ name: ref, why: 'nothing here answers to that' });
|
|
168
|
+
}
|
|
169
|
+
out.push({
|
|
170
|
+
label,
|
|
171
|
+
...(day.note ? { note: String(day.note).trim().slice(0, NOTE_MAX) } : {}),
|
|
172
|
+
items,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
return {
|
|
176
|
+
title: String(opts.title ?? '')
|
|
177
|
+
.trim()
|
|
178
|
+
.slice(0, LABEL_MAX) || 'Your trip',
|
|
179
|
+
stay: opts.stay,
|
|
180
|
+
days: out,
|
|
181
|
+
inTrip,
|
|
182
|
+
planned,
|
|
183
|
+
dropped,
|
|
184
|
+
};
|
|
185
|
+
};
|
|
186
|
+
/** An add-on, looked for at the hotels this plan has already named. */
|
|
187
|
+
const findExtra = async (backend, hotelIds, ref) => {
|
|
188
|
+
const wanted = ref.trim().toLowerCase();
|
|
189
|
+
for (const hotelId of hotelIds) {
|
|
190
|
+
const extras = await backend.extrasFor(hotelId);
|
|
191
|
+
const hit = extras.find((e) => e.id.toLowerCase() === wanted || e.name.toLowerCase() === wanted);
|
|
192
|
+
if (hit)
|
|
193
|
+
return hit;
|
|
194
|
+
}
|
|
195
|
+
return undefined;
|
|
196
|
+
};
|
|
197
|
+
//# sourceMappingURL=present.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"present.js","sourceRoot":"","sources":["../src/present.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import type { HotelConfig } from './config.js';
|
|
3
|
+
import { MemberStore } from './members.js';
|
|
3
4
|
import { type ToolDeps } from './tools.js';
|
|
4
5
|
import { TripIds } from './trip-ids.js';
|
|
5
6
|
import { TripStore } from './trip.js';
|
|
6
7
|
import { type ResolvedBrand } from './vocab.js';
|
|
7
8
|
export declare const PROTOCOL_VERSION = "2025-06-18";
|
|
8
|
-
export declare const VERSION = "0.
|
|
9
|
+
export declare const VERSION = "0.3.0";
|
|
9
10
|
/**
|
|
10
11
|
* The card's resource URI.
|
|
11
12
|
*
|
|
@@ -14,7 +15,7 @@ export declare const VERSION = "0.1.0";
|
|
|
14
15
|
* connector went storefront-v35 → v40 in a single day of UI work for exactly
|
|
15
16
|
* this reason.
|
|
16
17
|
*/
|
|
17
|
-
export declare const CARD_URI = "ui://curless/hotel/booking-
|
|
18
|
+
export declare const CARD_URI = "ui://curless/hotel/booking-v13.html";
|
|
18
19
|
/**
|
|
19
20
|
* ⚠️ `text/html;profile=mcp-app`, not `text/html+skybridge`. The MIME is how a
|
|
20
21
|
* host recognises this resource as a card at all; the plausible near-miss made
|
|
@@ -30,10 +31,10 @@ export declare const CARD_MIME = "text/html;profile=mcp-app";
|
|
|
30
31
|
*/
|
|
31
32
|
export declare const UI_META: {
|
|
32
33
|
readonly ui: {
|
|
33
|
-
readonly resourceUri: "ui://curless/hotel/booking-
|
|
34
|
+
readonly resourceUri: "ui://curless/hotel/booking-v13.html";
|
|
34
35
|
};
|
|
35
|
-
readonly 'ui/resourceUri': "ui://curless/hotel/booking-
|
|
36
|
-
readonly 'openai/outputTemplate': "ui://curless/hotel/booking-
|
|
36
|
+
readonly 'ui/resourceUri': "ui://curless/hotel/booking-v13.html";
|
|
37
|
+
readonly 'openai/outputTemplate': "ui://curless/hotel/booking-v13.html";
|
|
37
38
|
readonly 'openai/widgetAccessible': true;
|
|
38
39
|
};
|
|
39
40
|
/**
|
|
@@ -42,22 +43,24 @@ export declare const UI_META: {
|
|
|
42
43
|
* An MCP App runs in a sandboxed iframe and the spec is explicit: resource
|
|
43
44
|
* domains "empty or omitted → no network resources". The shopping connector
|
|
44
45
|
* lost three rounds of "the pictures still aren't showing" to this, having set
|
|
45
|
-
* only ChatGPT's key.
|
|
46
|
-
*
|
|
46
|
+
* only ChatGPT's key. The card draws its own plate when a hotel has no picture,
|
|
47
|
+
* so a missing host here is not an error anywhere - it is ninety-six tiles of
|
|
48
|
+
* coloured initials and no clue why. Derived from the data, hotels and rooms
|
|
49
|
+
* alike, by imageDomainsOf() below.
|
|
47
50
|
*/
|
|
48
51
|
export declare const widgetMeta: (imageDomains: string[]) => {
|
|
49
52
|
ui: {
|
|
50
53
|
csp: {
|
|
51
54
|
resourceDomains: string[];
|
|
52
55
|
};
|
|
53
|
-
resourceUri: "ui://curless/hotel/booking-
|
|
56
|
+
resourceUri: "ui://curless/hotel/booking-v13.html";
|
|
54
57
|
};
|
|
55
58
|
'openai/widgetCSP': {
|
|
56
59
|
connect_domains: never[];
|
|
57
60
|
resource_domains: string[];
|
|
58
61
|
};
|
|
59
|
-
'ui/resourceUri': "ui://curless/hotel/booking-
|
|
60
|
-
'openai/outputTemplate': "ui://curless/hotel/booking-
|
|
62
|
+
'ui/resourceUri': "ui://curless/hotel/booking-v13.html";
|
|
63
|
+
'openai/outputTemplate': "ui://curless/hotel/booking-v13.html";
|
|
61
64
|
'openai/widgetAccessible': true;
|
|
62
65
|
};
|
|
63
66
|
/** The trip snapshot that rides beside every answer, for the card's header. */
|
|
@@ -67,6 +70,7 @@ export type BuiltServer = {
|
|
|
67
70
|
brand: ResolvedBrand;
|
|
68
71
|
deps: ToolDeps;
|
|
69
72
|
trips: TripStore;
|
|
73
|
+
members: MemberStore;
|
|
70
74
|
tripIds: TripIds;
|
|
71
75
|
};
|
|
72
76
|
export type ServerOptions = {
|
|
@@ -77,6 +81,19 @@ export type ServerOptions = {
|
|
|
77
81
|
now?: () => number;
|
|
78
82
|
};
|
|
79
83
|
export declare const buildServer: (opts: ServerOptions) => BuiltServer;
|
|
84
|
+
/**
|
|
85
|
+
* Every origin the card will try to load a picture from.
|
|
86
|
+
*
|
|
87
|
+
* Rooms have photographs too, and a room photograph served from a host the
|
|
88
|
+
* hotel's own is not would be blocked by a CSP built from the hotels alone -
|
|
89
|
+
* one blank thumbnail per room, with nothing in any log to say why.
|
|
90
|
+
*/
|
|
91
|
+
export declare const imageDomainsOf: (hotels: {
|
|
92
|
+
imageUrl?: string;
|
|
93
|
+
rooms: {
|
|
94
|
+
imageUrl?: string;
|
|
95
|
+
}[];
|
|
96
|
+
}[]) => string[];
|
|
80
97
|
/** Read a brand's config from disk. The path is the one `data.file` resolves against. */
|
|
81
98
|
export declare const loadConfig: (path: string) => {
|
|
82
99
|
config: HotelConfig;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,IAAI,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,KAAK,QAAQ,EAA8C,MAAM,YAAY,CAAC;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAW,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,KAAK,aAAa,EAAgB,MAAM,YAAY,CAAC;AAS9D,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,wCAAwC,CAAC;AAC9D;;;;;GAKG;AACH,eAAO,MAAM,SAAS,8BAA8B,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,OAAO;;;;;;;CAKV,CAAC;AAEX;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GAAI,cAAc,MAAM,EAAE;;;;;;;;;;;;;;CAI/C,CAAC;AAEH,+EAA+E;AAC/E,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,MAAM,aAAa,KAAG,WAoOjD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GACzB,QAAQ;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,EAAE,KAC9D,MAAM,EAIR,CAAC;AAWF,yFAAyF;AACzF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,KAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAGlF,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -6,6 +6,7 @@ import { HOTEL_CARD_HTML } from './card.generated.js';
|
|
|
6
6
|
import { loadHotelData } from './data.js';
|
|
7
7
|
import { createDemoHotels } from './demo-hotels.js';
|
|
8
8
|
import { docsPage, privacyPage, termsPage } from './legal.js';
|
|
9
|
+
import { MemberStore } from './members.js';
|
|
9
10
|
import { buildInstructions, listTools, tripToolNames } from './surface.js';
|
|
10
11
|
import { buildOutputSchemas, buildTools, handleTool } from './tools.js';
|
|
11
12
|
import { TripIds } from './trip-ids.js';
|
|
@@ -18,7 +19,7 @@ import { resolveBrand } from './vocab.js';
|
|
|
18
19
|
// that a host actually talks to, and the few protocol facts that were each
|
|
19
20
|
// learned by getting them wrong somewhere else in this repo.
|
|
20
21
|
export const PROTOCOL_VERSION = '2025-06-18';
|
|
21
|
-
export const VERSION = '0.
|
|
22
|
+
export const VERSION = '0.3.0';
|
|
22
23
|
/**
|
|
23
24
|
* The card's resource URI.
|
|
24
25
|
*
|
|
@@ -27,7 +28,7 @@ export const VERSION = '0.1.0';
|
|
|
27
28
|
* connector went storefront-v35 → v40 in a single day of UI work for exactly
|
|
28
29
|
* this reason.
|
|
29
30
|
*/
|
|
30
|
-
export const CARD_URI = 'ui://curless/hotel/booking-
|
|
31
|
+
export const CARD_URI = 'ui://curless/hotel/booking-v13.html';
|
|
31
32
|
/**
|
|
32
33
|
* ⚠️ `text/html;profile=mcp-app`, not `text/html+skybridge`. The MIME is how a
|
|
33
34
|
* host recognises this resource as a card at all; the plausible near-miss made
|
|
@@ -53,8 +54,10 @@ export const UI_META = {
|
|
|
53
54
|
* An MCP App runs in a sandboxed iframe and the spec is explicit: resource
|
|
54
55
|
* domains "empty or omitted → no network resources". The shopping connector
|
|
55
56
|
* lost three rounds of "the pictures still aren't showing" to this, having set
|
|
56
|
-
* only ChatGPT's key.
|
|
57
|
-
*
|
|
57
|
+
* only ChatGPT's key. The card draws its own plate when a hotel has no picture,
|
|
58
|
+
* so a missing host here is not an error anywhere - it is ninety-six tiles of
|
|
59
|
+
* coloured initials and no clue why. Derived from the data, hotels and rooms
|
|
60
|
+
* alike, by imageDomainsOf() below.
|
|
58
61
|
*/
|
|
59
62
|
export const widgetMeta = (imageDomains) => ({
|
|
60
63
|
...UI_META,
|
|
@@ -74,13 +77,19 @@ export const buildServer = (opts) => {
|
|
|
74
77
|
throw new Error(`hotel-storefront ${VERSION} only implements data.source "demo"; the group's own API is the next step`);
|
|
75
78
|
}
|
|
76
79
|
const data = loadHotelData(config.data.file ?? 'data/hotels.json', opts.configPath);
|
|
77
|
-
const backend = createDemoHotels({
|
|
80
|
+
const backend = createDemoHotels({
|
|
81
|
+
data,
|
|
82
|
+
now,
|
|
83
|
+
...(config.data.holdMinutes ? { holdMs: config.data.holdMinutes * 60_000 } : {}),
|
|
84
|
+
});
|
|
78
85
|
const trips = new TripStore(now);
|
|
86
|
+
const members = new MemberStore(now);
|
|
79
87
|
const tripIds = new TripIds(now);
|
|
80
88
|
const publicUrl = (opts.publicUrl ?? config.urls.publicUrl ?? config.urls.appUrl).replace(/\/$/, '');
|
|
81
89
|
const deps = {
|
|
82
90
|
backend,
|
|
83
91
|
trips,
|
|
92
|
+
members,
|
|
84
93
|
tools: brand.tools,
|
|
85
94
|
vocab: brand.vocab,
|
|
86
95
|
websiteUrl: config.server.websiteUrl,
|
|
@@ -93,7 +102,7 @@ export const buildServer = (opts) => {
|
|
|
93
102
|
// booking card over "can I bring a dog" puts a storefront in front of someone
|
|
94
103
|
// who asked a question.
|
|
95
104
|
const CARDLESS = new Set([brand.tools.policies]);
|
|
96
|
-
const imageDomains =
|
|
105
|
+
const imageDomains = imageDomainsOf(data.hotels);
|
|
97
106
|
const META = widgetMeta(imageDomains);
|
|
98
107
|
const app = new Hono();
|
|
99
108
|
const file = (name) => {
|
|
@@ -144,6 +153,7 @@ export const buildServer = (opts) => {
|
|
|
144
153
|
hotels: data.hotels.length,
|
|
145
154
|
demo: brand.vocab.demo,
|
|
146
155
|
trips: trips.size,
|
|
156
|
+
signedIn: members.size,
|
|
147
157
|
}));
|
|
148
158
|
app.get('/', (c) => c.redirect('./docs', 302));
|
|
149
159
|
app.get('/mcp', (c) => c.json({ name: config.server.name, transport: 'streamable-http', version: VERSION }));
|
|
@@ -255,8 +265,18 @@ export const buildServer = (opts) => {
|
|
|
255
265
|
}
|
|
256
266
|
return fail(c, id, -32601, `unknown method: ${method}`);
|
|
257
267
|
});
|
|
258
|
-
return { app, brand, deps, trips, tripIds };
|
|
268
|
+
return { app, brand, deps, trips, members, tripIds };
|
|
259
269
|
};
|
|
270
|
+
/**
|
|
271
|
+
* Every origin the card will try to load a picture from.
|
|
272
|
+
*
|
|
273
|
+
* Rooms have photographs too, and a room photograph served from a host the
|
|
274
|
+
* hotel's own is not would be blocked by a CSP built from the hotels alone -
|
|
275
|
+
* one blank thumbnail per room, with nothing in any log to say why.
|
|
276
|
+
*/
|
|
277
|
+
export const imageDomainsOf = (hotels) => [
|
|
278
|
+
...new Set(hotels.flatMap((h) => [...hostOf(h.imageUrl), ...h.rooms.flatMap((r) => hostOf(r.imageUrl))])),
|
|
279
|
+
];
|
|
260
280
|
const hostOf = (url) => {
|
|
261
281
|
if (!url)
|
|
262
282
|
return [];
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/surface.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAY3D;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,aAAa,KAAG,
|
|
1
|
+
{"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAY3D;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,OAAO,aAAa,KAAG,MA0DxD,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;;;CAGb,CAAC;AAEX,6DAA6D;AAC7D,eAAO,MAAM,aAAa,GAAI,OAAO,aAAa,KAAG,WAAW,CAAC,MAAM,CAWnE,CAAC"}
|