@curless/hotel-storefront 0.24.4 → 0.26.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__/__helpers__/sessions.d.ts +10 -0
- package/dist/__tests__/__helpers__/sessions.d.ts.map +1 -0
- package/dist/__tests__/__helpers__/sessions.js +37 -0
- package/dist/__tests__/__helpers__/sessions.js.map +1 -0
- package/dist/__tests__/card-contract.test.js +20 -0
- package/dist/__tests__/card-contract.test.js.map +1 -1
- package/dist/__tests__/data.test.js +7 -1
- package/dist/__tests__/data.test.js.map +1 -1
- package/dist/__tests__/dates.test.js +13 -1
- package/dist/__tests__/dates.test.js.map +1 -1
- package/dist/__tests__/huazhu-audit.test.js +69 -4
- package/dist/__tests__/huazhu-audit.test.js.map +1 -1
- package/dist/__tests__/huazhu-backend.test.js +93 -0
- package/dist/__tests__/huazhu-backend.test.js.map +1 -1
- package/dist/__tests__/huazhu-sandbox.test.js +7 -1
- package/dist/__tests__/huazhu-sandbox.test.js.map +1 -1
- package/dist/__tests__/server.test.js +112 -3
- package/dist/__tests__/server.test.js.map +1 -1
- package/dist/__tests__/state.test.d.ts +2 -0
- package/dist/__tests__/state.test.d.ts.map +1 -0
- package/dist/__tests__/state.test.js +204 -0
- package/dist/__tests__/state.test.js.map +1 -0
- package/dist/__tests__/tools.test.js +18 -0
- package/dist/__tests__/tools.test.js.map +1 -1
- package/dist/backend.d.ts +5 -0
- package/dist/backend.d.ts.map +1 -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 +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -11
- package/dist/config.js.map +1 -1
- package/dist/dates.d.ts +9 -0
- package/dist/dates.d.ts.map +1 -1
- package/dist/dates.js +32 -0
- package/dist/dates.js.map +1 -1
- package/dist/demo-hotels.d.ts +21 -1
- package/dist/demo-hotels.d.ts.map +1 -1
- package/dist/demo-hotels.js +83 -11
- package/dist/demo-hotels.js.map +1 -1
- package/dist/huazhu/backend.d.ts +5 -0
- package/dist/huazhu/backend.d.ts.map +1 -1
- package/dist/huazhu/backend.js +67 -9
- package/dist/huazhu/backend.js.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/legal.d.ts +8 -1
- package/dist/legal.d.ts.map +1 -1
- package/dist/legal.js +22 -8
- package/dist/legal.js.map +1 -1
- package/dist/limits.d.ts +49 -0
- package/dist/limits.d.ts.map +1 -1
- package/dist/limits.js +45 -0
- package/dist/limits.js.map +1 -1
- package/dist/members.d.ts +3 -1
- package/dist/members.d.ts.map +1 -1
- package/dist/members.js +24 -6
- package/dist/members.js.map +1 -1
- package/dist/money.d.ts.map +1 -1
- package/dist/money.js +8 -1
- package/dist/money.js.map +1 -1
- package/dist/server.d.ts +22 -8
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +121 -37
- package/dist/server.js.map +1 -1
- package/dist/sessions.d.ts +19 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +96 -0
- package/dist/sessions.js.map +1 -0
- package/dist/state.d.ts +32 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +118 -0
- package/dist/state.js.map +1 -0
- package/dist/tools.d.ts +13 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +69 -5
- package/dist/tools.js.map +1 -1
- package/dist/trip-ids.d.ts +8 -1
- package/dist/trip-ids.d.ts.map +1 -1
- package/dist/trip-ids.js +24 -1
- package/dist/trip-ids.js.map +1 -1
- package/dist/trip.d.ts +3 -1
- package/dist/trip.d.ts.map +1 -1
- package/dist/trip.js +23 -6
- package/dist/trip.js.map +1 -1
- package/dist/types.d.ts +8 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/members.js
CHANGED
|
@@ -7,17 +7,27 @@
|
|
|
7
7
|
// somebody else's booking. `listBookings` still keys on the conversation and
|
|
8
8
|
// the email the booking was made with, and nothing here changes that.
|
|
9
9
|
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
10
|
+
// Kept like the trip - on disk when the deployment has a state directory, so a
|
|
11
|
+
// deploy does not sign a guest out between a member rate being quoted and
|
|
12
|
+
// booked - and still forgotten two hours after it was last used. Never longer:
|
|
13
|
+
// it is identity.
|
|
13
14
|
/** An untouched sign-in is forgotten after this long - shorter than a trip's, because it is identity. */
|
|
14
15
|
export const MEMBER_TTL_MS = 2 * 60 * 60_000;
|
|
15
16
|
const MAX_SESSIONS = 2_000;
|
|
16
17
|
export class MemberStore {
|
|
17
18
|
now;
|
|
19
|
+
file;
|
|
18
20
|
sessions = new Map();
|
|
19
|
-
constructor(now = () => Date.now()) {
|
|
21
|
+
constructor(now = () => Date.now(), file) {
|
|
20
22
|
this.now = now;
|
|
23
|
+
this.file = file;
|
|
24
|
+
const saved = file?.read();
|
|
25
|
+
for (const [key, entry] of saved?.sessions ?? []) {
|
|
26
|
+
if (typeof key === 'string' && typeof entry?.member?.number === 'string')
|
|
27
|
+
this.sessions.set(key, entry);
|
|
28
|
+
}
|
|
29
|
+
file?.bind(() => ({ sessions: [...this.sessions] }));
|
|
30
|
+
this.sweep();
|
|
21
31
|
}
|
|
22
32
|
read(key) {
|
|
23
33
|
this.sweep();
|
|
@@ -25,6 +35,7 @@ export class MemberStore {
|
|
|
25
35
|
if (!entry)
|
|
26
36
|
return undefined;
|
|
27
37
|
entry.at = this.now();
|
|
38
|
+
this.file?.changed();
|
|
28
39
|
return entry.member;
|
|
29
40
|
}
|
|
30
41
|
set(key, member) {
|
|
@@ -37,6 +48,7 @@ export class MemberStore {
|
|
|
37
48
|
break;
|
|
38
49
|
this.sessions.delete(oldest);
|
|
39
50
|
}
|
|
51
|
+
this.file?.changed();
|
|
40
52
|
}
|
|
41
53
|
/**
|
|
42
54
|
* The saved preferences, on every conversation signed in as this member.
|
|
@@ -54,9 +66,11 @@ export class MemberStore {
|
|
|
54
66
|
const { preferences: _was, ...rest } = entry.member;
|
|
55
67
|
entry.member = preferences?.length ? { ...rest, preferences: [...preferences] } : rest;
|
|
56
68
|
}
|
|
69
|
+
this.file?.changed();
|
|
57
70
|
}
|
|
58
71
|
clear(key) {
|
|
59
|
-
this.sessions.delete(key)
|
|
72
|
+
if (this.sessions.delete(key))
|
|
73
|
+
this.file?.changed();
|
|
60
74
|
}
|
|
61
75
|
get size() {
|
|
62
76
|
this.sweep();
|
|
@@ -64,10 +78,14 @@ export class MemberStore {
|
|
|
64
78
|
}
|
|
65
79
|
sweep() {
|
|
66
80
|
const cutoff = this.now() - MEMBER_TTL_MS;
|
|
81
|
+
let gone = false;
|
|
67
82
|
for (const [key, entry] of this.sessions) {
|
|
68
83
|
if (entry.at < cutoff)
|
|
69
|
-
this.sessions.delete(key);
|
|
84
|
+
gone = this.sessions.delete(key) || gone;
|
|
70
85
|
}
|
|
86
|
+
// Off the disk as well as out of memory: "forgotten two hours after" is a promise.
|
|
87
|
+
if (gone)
|
|
88
|
+
this.file?.changed();
|
|
71
89
|
}
|
|
72
90
|
}
|
|
73
91
|
//# sourceMappingURL=members.js.map
|
package/dist/members.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"members.js","sourceRoot":"","sources":["../src/members.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"members.js","sourceRoot":"","sources":["../src/members.ts"],"names":[],"mappings":"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"}
|
package/dist/money.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../src/money.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAYxC,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MACK,CAAC;AAErD,uFAAuF;AACvF,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MACf,CAAC;AAE5C,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,KAGtD,CAAC;AAEH,eAAO,MAAM,QAAQ,GAAI,GAAG,KAAK,EAAE,GAAG,KAAK,KAAG,KAG7C,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,OAAO,KAAK,EAAE,EAAE,UAAU,MAAM,KAAG,KACI,CAAC;AAEjE,eAAO,MAAM,aAAa,GAAI,GAAG,KAAK,EAAE,IAAI,MAAM,KAAG,KAAwC,CAAC;AAE9F;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,GAAI,GAAG,KAAK,KAAG,KAGrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,GAAG,KAAK,EAAE,MAAM,MAAM,KAAG,KAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"money.d.ts","sourceRoot":"","sources":["../src/money.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAYxC,eAAO,MAAM,WAAW,GAAI,UAAU,MAAM,KAAG,MACK,CAAC;AAErD,uFAAuF;AACvF,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MACf,CAAC;AAE5C,eAAO,MAAM,KAAK,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,KAGtD,CAAC;AAEH,eAAO,MAAM,QAAQ,GAAI,GAAG,KAAK,EAAE,GAAG,KAAK,KAAG,KAG7C,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,OAAO,KAAK,EAAE,EAAE,UAAU,MAAM,KAAG,KACI,CAAC;AAEjE,eAAO,MAAM,aAAa,GAAI,GAAG,KAAK,EAAE,IAAI,MAAM,KAAG,KAAwC,CAAC;AAE9F;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU,GAAI,GAAG,KAAK,KAAG,KAGrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,GAAG,KAAK,EAAE,MAAM,MAAM,KAAG,KAA0C,CAAC;AAmB1F,4EAA4E;AAC5E,eAAO,MAAM,WAAW,GAAI,GAAG,KAAK,KAAG,MAUtC,CAAC"}
|
package/dist/money.js
CHANGED
|
@@ -41,12 +41,19 @@ export const wholeUnits = (m) => {
|
|
|
41
41
|
* made the trip HK$17,967 and its two bookings HK$17,968 (2026-09-28 audit).
|
|
42
42
|
*/
|
|
43
43
|
export const taxOn = (m, rate) => money(m.minor * rate, m.currency);
|
|
44
|
+
/**
|
|
45
|
+
* ⚠️ ONE SYMBOL, ONE CURRENCY. CNY and JPY were both "¥", so a trip through
|
|
46
|
+
* Shanghai and Tokyo totalled "¥3,364 · ¥152,550" - two figures kept apart
|
|
47
|
+
* precisely because they are not the same money, printed as if they were
|
|
48
|
+
* (2026-10-05 audit). The yuan keeps the bare ¥: most of the hotels are in
|
|
49
|
+
* China and it is what their guests read.
|
|
50
|
+
*/
|
|
44
51
|
const SYMBOLS = {
|
|
45
52
|
HKD: 'HK$',
|
|
46
53
|
CNY: '¥',
|
|
47
54
|
SGD: 'S$',
|
|
48
55
|
USD: '$',
|
|
49
|
-
JPY: '¥',
|
|
56
|
+
JPY: 'JP¥',
|
|
50
57
|
EUR: '€',
|
|
51
58
|
GBP: '£',
|
|
52
59
|
};
|
package/dist/money.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"money.js","sourceRoot":"","sources":["../src/money.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,+DAA+D;AAC/D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAEzE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE,CACtD,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAErD,uFAAuF;AACvF,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAU,EAAE,CACjE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAS,EAAE,CAAC,CAAC;IAChE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IACxB,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAQ,EAAE,CAAQ,EAAS,EAAE;IACpD,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5F,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,QAAgB,EAAS,EAAE,CAClE,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAQ,EAAE,EAAU,EAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE9F;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAS,EAAE;IAC5C,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AACxD,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAQ,EAAE,IAAY,EAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AAE1F,MAAM,OAAO,GAA2B;IACtC,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"money.js","sourceRoot":"","sources":["../src/money.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Hono } from 'hono';
|
|
2
2
|
import type { HotelConfig } from './config.js';
|
|
3
3
|
import { MemberStore } from './members.js';
|
|
4
|
+
import { Sessions } from './sessions.js';
|
|
4
5
|
import { type ToolDeps } from './tools.js';
|
|
5
6
|
import { TripIds } from './trip-ids.js';
|
|
6
7
|
import { TripStore } from './trip.js';
|
|
@@ -16,7 +17,7 @@ export declare const PROTOCOL_VERSION = "2025-06-18";
|
|
|
16
17
|
* number. Found by reading the boot banner of a container that had just been
|
|
17
18
|
* deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
|
|
18
19
|
*/
|
|
19
|
-
export declare const VERSION = "0.
|
|
20
|
+
export declare const VERSION = "0.26.0";
|
|
20
21
|
/**
|
|
21
22
|
* The card's resource URI.
|
|
22
23
|
*
|
|
@@ -25,7 +26,7 @@ export declare const VERSION = "0.24.4";
|
|
|
25
26
|
* connector went storefront-v35 → v40 in a single day of UI work for exactly
|
|
26
27
|
* this reason.
|
|
27
28
|
*/
|
|
28
|
-
export declare const CARD_URI = "ui://curless/hotel/booking-
|
|
29
|
+
export declare const CARD_URI = "ui://curless/hotel/booking-v44.html";
|
|
29
30
|
/**
|
|
30
31
|
* ⚠️ `text/html;profile=mcp-app`, not `text/html+skybridge`. The MIME is how a
|
|
31
32
|
* host recognises this resource as a card at all; the plausible near-miss made
|
|
@@ -41,10 +42,10 @@ export declare const CARD_MIME = "text/html;profile=mcp-app";
|
|
|
41
42
|
*/
|
|
42
43
|
export declare const UI_META: {
|
|
43
44
|
readonly ui: {
|
|
44
|
-
readonly resourceUri: "ui://curless/hotel/booking-
|
|
45
|
+
readonly resourceUri: "ui://curless/hotel/booking-v44.html";
|
|
45
46
|
};
|
|
46
|
-
readonly 'ui/resourceUri': "ui://curless/hotel/booking-
|
|
47
|
-
readonly 'openai/outputTemplate': "ui://curless/hotel/booking-
|
|
47
|
+
readonly 'ui/resourceUri': "ui://curless/hotel/booking-v44.html";
|
|
48
|
+
readonly 'openai/outputTemplate': "ui://curless/hotel/booking-v44.html";
|
|
48
49
|
readonly 'openai/widgetAccessible': true;
|
|
49
50
|
};
|
|
50
51
|
/**
|
|
@@ -63,14 +64,14 @@ export declare const widgetMeta: (imageDomains: string[]) => {
|
|
|
63
64
|
csp: {
|
|
64
65
|
resourceDomains: string[];
|
|
65
66
|
};
|
|
66
|
-
resourceUri: "ui://curless/hotel/booking-
|
|
67
|
+
resourceUri: "ui://curless/hotel/booking-v44.html";
|
|
67
68
|
};
|
|
68
69
|
'openai/widgetCSP': {
|
|
69
70
|
connect_domains: never[];
|
|
70
71
|
resource_domains: string[];
|
|
71
72
|
};
|
|
72
|
-
'ui/resourceUri': "ui://curless/hotel/booking-
|
|
73
|
-
'openai/outputTemplate': "ui://curless/hotel/booking-
|
|
73
|
+
'ui/resourceUri': "ui://curless/hotel/booking-v44.html";
|
|
74
|
+
'openai/outputTemplate': "ui://curless/hotel/booking-v44.html";
|
|
74
75
|
'openai/widgetAccessible': true;
|
|
75
76
|
};
|
|
76
77
|
/** The trip snapshot that rides beside every answer, for the card's header. */
|
|
@@ -84,6 +85,9 @@ export type BuiltServer = {
|
|
|
84
85
|
trips: TripStore;
|
|
85
86
|
members: MemberStore;
|
|
86
87
|
tripIds: TripIds;
|
|
88
|
+
sessions: Sessions;
|
|
89
|
+
/** Whatever the stores have not written yet, written now - on a clean stop. */
|
|
90
|
+
flush: () => void;
|
|
87
91
|
};
|
|
88
92
|
export type ServerOptions = {
|
|
89
93
|
config: HotelConfig;
|
|
@@ -116,6 +120,16 @@ export declare const imageDomainsOf: (hotels: {
|
|
|
116
120
|
imageUrl?: string;
|
|
117
121
|
}[];
|
|
118
122
|
}[]) => string[];
|
|
123
|
+
/**
|
|
124
|
+
* The client's address, from the header the edge proxy sets.
|
|
125
|
+
*
|
|
126
|
+
* ⚠️ THE LAST ENTRY, NOT THE FIRST. A client can send its own
|
|
127
|
+
* X-Forwarded-For; the proxy in front of us appends the address it actually
|
|
128
|
+
* saw, so the last entry is the one we can believe and the first may be
|
|
129
|
+
* anything. Without the header - a direct connection inside the host - there
|
|
130
|
+
* is no address, and the limit that reads it is skipped.
|
|
131
|
+
*/
|
|
132
|
+
export declare const clientIp: (header: string | undefined) => string | undefined;
|
|
119
133
|
/** Read a brand's config from disk. The path is the one `data.file` resolves against. */
|
|
120
134
|
export declare const loadConfig: (path: string) => {
|
|
121
135
|
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;AAG1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,IAAI,EAAE,MAAM,MAAM,CAAC;AAG1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAS/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EACL,KAAK,QAAQ,EAMd,MAAM,YAAY,CAAC;AACpB,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;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC;;;;;;;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,yEAAyE;IACzE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB,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;IACnB,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AA2IF,eAAO,MAAM,WAAW,GAAI,MAAM,aAAa,KAAG,WAmUjD,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;;;;;;;;GAQG;AACH,eAAO,MAAM,QAAQ,GAAI,QAAQ,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAG9D,CAAC;AAEF,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
|
@@ -13,8 +13,10 @@ import { HuazhuClient } from './huazhu/client.js';
|
|
|
13
13
|
import { docsPage, privacyPage, termsPage } from './legal.js';
|
|
14
14
|
import { Misses } from './limits.js';
|
|
15
15
|
import { MemberStore } from './members.js';
|
|
16
|
+
import { Sessions } from './sessions.js';
|
|
17
|
+
import { StateDir } from './state.js';
|
|
16
18
|
import { buildInstructions, listTools, tripToolNames } from './surface.js';
|
|
17
|
-
import { buildOutputSchemas, buildTools, handleTool, withheldTools, } from './tools.js';
|
|
19
|
+
import { buildOutputSchemas, buildTools, handleTool, tripGone, withheldTools, } from './tools.js';
|
|
18
20
|
import { TripIds } from './trip-ids.js';
|
|
19
21
|
import { TripStore, tripKey } from './trip.js';
|
|
20
22
|
import { resolveBrand } from './vocab.js';
|
|
@@ -35,7 +37,7 @@ export const PROTOCOL_VERSION = '2025-06-18';
|
|
|
35
37
|
* number. Found by reading the boot banner of a container that had just been
|
|
36
38
|
* deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
|
|
37
39
|
*/
|
|
38
|
-
export const VERSION = '0.
|
|
40
|
+
export const VERSION = '0.26.0';
|
|
39
41
|
/**
|
|
40
42
|
* The card's resource URI.
|
|
41
43
|
*
|
|
@@ -44,7 +46,7 @@ export const VERSION = '0.24.4';
|
|
|
44
46
|
* connector went storefront-v35 → v40 in a single day of UI work for exactly
|
|
45
47
|
* this reason.
|
|
46
48
|
*/
|
|
47
|
-
export const CARD_URI = 'ui://curless/hotel/booking-
|
|
49
|
+
export const CARD_URI = 'ui://curless/hotel/booking-v44.html';
|
|
48
50
|
/**
|
|
49
51
|
* ⚠️ `text/html;profile=mcp-app`, not `text/html+skybridge`. The MIME is how a
|
|
50
52
|
* host recognises this resource as a card at all; the plausible near-miss made
|
|
@@ -82,13 +84,30 @@ export const widgetMeta = (imageDomains) => ({
|
|
|
82
84
|
});
|
|
83
85
|
/** The trip snapshot that rides beside every answer, for the card's header. */
|
|
84
86
|
export const TRIP_META_KEY = 'curless/trip';
|
|
85
|
-
|
|
87
|
+
/**
|
|
88
|
+
* Where this deployment keeps what must survive a restart - or nowhere.
|
|
89
|
+
*
|
|
90
|
+
* ⚠️ THE BRAND'S REPOSITORY IS MOUNTED READ-ONLY on the box, beside this
|
|
91
|
+
* config - so where state is written can be moved out of it by the deployment
|
|
92
|
+
* (`HOTEL_STATE_DIR`) without the brand's config naming a path that only
|
|
93
|
+
* exists inside our container. A demo with no `HOTEL_STATE_DIR` writes
|
|
94
|
+
* nothing, as before; an API backend always has a directory (`api.stateDir`),
|
|
95
|
+
* because its bookings are real.
|
|
96
|
+
*/
|
|
97
|
+
const stateDirOf = (config, opts) => {
|
|
98
|
+
const env = opts.env ?? process.env;
|
|
99
|
+
const named = env.HOTEL_STATE_DIR || (config.data.source === 'api' ? config.data.api?.stateDir : undefined);
|
|
100
|
+
return named ? resolve(opts.configPath ? dirname(opts.configPath) : '.', named) : undefined;
|
|
101
|
+
};
|
|
102
|
+
const makeBackend = (config, opts, now, state) => {
|
|
86
103
|
if (config.data.source === 'demo') {
|
|
87
104
|
const data = loadHotelData(config.data.file ?? 'data/hotels.json', opts.configPath);
|
|
105
|
+
const file = state.file('demo-bookings.json');
|
|
88
106
|
const backend = createDemoHotels({
|
|
89
107
|
data,
|
|
90
108
|
now,
|
|
91
109
|
...(config.data.holdMinutes ? { holdMs: config.data.holdMinutes * 60_000 } : {}),
|
|
110
|
+
...(file ? { state: file } : {}),
|
|
92
111
|
});
|
|
93
112
|
const domains = imageDomainsOf(data.hotels);
|
|
94
113
|
return {
|
|
@@ -151,6 +170,7 @@ const makeBackend = (config, opts, now) => {
|
|
|
151
170
|
language: api.language ?? 'zh',
|
|
152
171
|
tz: api.timezone ?? 'Asia/Shanghai',
|
|
153
172
|
...(api.allowTags ? { allowTags: api.allowTags } : {}),
|
|
173
|
+
...(api.limits ? { limits: api.limits } : {}),
|
|
154
174
|
now,
|
|
155
175
|
});
|
|
156
176
|
if (opts.background !== false) {
|
|
@@ -181,13 +201,20 @@ export const buildServer = (opts) => {
|
|
|
181
201
|
const config = opts.config;
|
|
182
202
|
const brand = resolveBrand(config);
|
|
183
203
|
const now = opts.now ?? (() => Date.now());
|
|
184
|
-
const
|
|
204
|
+
const state = new StateDir(stateDirOf(config, opts));
|
|
205
|
+
const made = makeBackend(config, opts, now, state);
|
|
185
206
|
const { backend } = made;
|
|
186
207
|
const caps = backend.capabilities ?? FULL_CAPABILITIES;
|
|
187
|
-
const trips = new TripStore(now);
|
|
188
|
-
const members = new MemberStore(now);
|
|
189
|
-
const tripIds = new TripIds(now);
|
|
208
|
+
const trips = new TripStore(now, state.file('trips.json'));
|
|
209
|
+
const members = new MemberStore(now, state.file('members.json'));
|
|
210
|
+
const tripIds = new TripIds(now, state.file('trip-ids.json'));
|
|
211
|
+
const sessions = new Sessions(now, state.file('sessions.json'));
|
|
190
212
|
const misses = new Misses(now);
|
|
213
|
+
// What has outlived its time goes off the disk too, even with nobody asking:
|
|
214
|
+
// "forgotten two hours after" is a promise the privacy page makes.
|
|
215
|
+
if (state.persisted) {
|
|
216
|
+
setInterval(() => void [trips.size, members.size, tripIds.size], 10 * 60_000).unref?.();
|
|
217
|
+
}
|
|
191
218
|
const publicUrl = (opts.publicUrl ?? config.urls.publicUrl ?? config.urls.appUrl).replace(/\/$/, '');
|
|
192
219
|
const deps = {
|
|
193
220
|
backend,
|
|
@@ -252,7 +279,7 @@ export const buildServer = (opts) => {
|
|
|
252
279
|
: c.notFound();
|
|
253
280
|
});
|
|
254
281
|
app.get('/docs', (c) => c.html(docsPage(config, caps)));
|
|
255
|
-
app.get('/privacy', (c) => c.html(privacyPage(config, made.imageDomains(), caps)));
|
|
282
|
+
app.get('/privacy', (c) => c.html(privacyPage(config, made.imageDomains(), caps, state.persisted)));
|
|
256
283
|
app.get('/terms', (c) => c.html(termsPage(config, caps)));
|
|
257
284
|
// ⚠️ TWO HEALTH ANSWERS. `/healthz` is public (the deploy gate reads it
|
|
258
285
|
// through Caddy) and says only what is running; how many trips, sign-ins and
|
|
@@ -293,7 +320,7 @@ export const buildServer = (opts) => {
|
|
|
293
320
|
// trip, the bookings and the sign-in are filed under, and the only thing
|
|
294
321
|
// that makes it anybody's is that nobody else can know it. It is never
|
|
295
322
|
// put in an answer either - see `StoredBooking` in demo-hotels.ts.
|
|
296
|
-
const sessionId =
|
|
323
|
+
const sessionId = sessions.issue();
|
|
297
324
|
c.header('Mcp-Session-Id', sessionId);
|
|
298
325
|
return ok(c, id, {
|
|
299
326
|
protocolVersion: PROTOCOL_VERSION,
|
|
@@ -315,6 +342,17 @@ export const buildServer = (opts) => {
|
|
|
315
342
|
instructions: buildInstructions(brand, caps),
|
|
316
343
|
});
|
|
317
344
|
}
|
|
345
|
+
// ⚠️ ONLY A SESSION WE ISSUED - see sessions.ts. 404 is the protocol's
|
|
346
|
+
// word for "that session is gone": the host initializes again. A call
|
|
347
|
+
// with no session id at all is still answered (the card's may have none).
|
|
348
|
+
const presented = c.req.header('mcp-session-id');
|
|
349
|
+
if (presented !== undefined && !sessions.known(presented)) {
|
|
350
|
+
return c.json({
|
|
351
|
+
jsonrpc: '2.0',
|
|
352
|
+
id: id ?? null,
|
|
353
|
+
error: { code: -32001, message: 'Session not found - initialize again' },
|
|
354
|
+
}, 404);
|
|
355
|
+
}
|
|
318
356
|
// ⚠️ The spec says a receiver MUST answer ping promptly. The shopping
|
|
319
357
|
// connector answered -32601 and Claude told the buyer it could not reach
|
|
320
358
|
// the shop - over a connection on which every tool call was succeeding.
|
|
@@ -366,13 +404,32 @@ export const buildServer = (opts) => {
|
|
|
366
404
|
isError: true,
|
|
367
405
|
});
|
|
368
406
|
}
|
|
369
|
-
const session =
|
|
407
|
+
const session = presented ?? `anon-${randomUUID()}`;
|
|
370
408
|
// The card names its trip; the conversation is known by its session. See
|
|
371
409
|
// trip-ids.ts for why both exist.
|
|
372
|
-
const
|
|
410
|
+
const asked = typeof args.trip === 'string' && args.trip ? args.trip : undefined;
|
|
411
|
+
const named = asked ? tripIds.keyFor(asked) : undefined;
|
|
412
|
+
// ⚠️ A TRIP THE CARD NAMES AND WE DO NOT KNOW IS SAID SO - see `tripGone`.
|
|
413
|
+
// Anything else it asked is still answered, but with no trip beside it:
|
|
414
|
+
// the card would take that trip's id as its own.
|
|
415
|
+
const lost = asked !== undefined && named === undefined;
|
|
416
|
+
if (lost && TRIP_TOOLS.has(name)) {
|
|
417
|
+
const gone = tripGone(deps);
|
|
418
|
+
return ok(c, id, {
|
|
419
|
+
content: [{ type: 'text', text: gone.text }],
|
|
420
|
+
structuredContent: gone.structured,
|
|
421
|
+
isError: true,
|
|
422
|
+
_meta: meta(),
|
|
423
|
+
});
|
|
424
|
+
}
|
|
373
425
|
const key = named ?? tripKey(session, config.brand);
|
|
374
426
|
try {
|
|
375
|
-
const
|
|
427
|
+
const ip = clientIp(c.req.header('x-forwarded-for'));
|
|
428
|
+
const answer = await handleTool(deps, name, args, {
|
|
429
|
+
session,
|
|
430
|
+
tripKey: key,
|
|
431
|
+
...(ip ? { ip } : {}),
|
|
432
|
+
});
|
|
376
433
|
const lines = trips.read(key);
|
|
377
434
|
return ok(c, id, {
|
|
378
435
|
content: [{ type: 'text', text: answer.text }],
|
|
@@ -381,29 +438,33 @@ export const buildServer = (opts) => {
|
|
|
381
438
|
// its header, and the model needs no such list - handing it one is
|
|
382
439
|
// how a model starts retyping a trip the guest can see.
|
|
383
440
|
_meta: {
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
441
|
+
...(lost
|
|
442
|
+
? {}
|
|
443
|
+
: {
|
|
444
|
+
[TRIP_META_KEY]: {
|
|
445
|
+
tripId: tripIds.idFor(key),
|
|
446
|
+
count: lines.length,
|
|
447
|
+
// ⚠️ WHAT IS IN THE TRIP, ON EVERY ANSWER. The card learned the
|
|
448
|
+
// trip only from a trip view, so a hotel opened by the model
|
|
449
|
+
// showed "+" on a room already held twice, and pressing it SET
|
|
450
|
+
// the count to one; and a trip view redrawn by Back put a booked
|
|
451
|
+
// trip's lines back on the header badge (2026-09-28 audit).
|
|
452
|
+
lines: lines.map((l) => l.kind === 'room'
|
|
453
|
+
? {
|
|
454
|
+
kind: 'room',
|
|
455
|
+
hotelId: l.hotelId,
|
|
456
|
+
roomRef: l.roomId,
|
|
457
|
+
stay: l.stay,
|
|
458
|
+
quantity: l.rooms ?? 1,
|
|
459
|
+
}
|
|
460
|
+
: {
|
|
461
|
+
kind: 'extra',
|
|
462
|
+
hotelId: l.hotelId,
|
|
463
|
+
extraRef: l.extraId,
|
|
464
|
+
quantity: l.quantity,
|
|
465
|
+
}),
|
|
466
|
+
},
|
|
467
|
+
}),
|
|
407
468
|
...(CARDLESS.has(name) ? {} : meta()),
|
|
408
469
|
},
|
|
409
470
|
});
|
|
@@ -414,7 +475,17 @@ export const buildServer = (opts) => {
|
|
|
414
475
|
}
|
|
415
476
|
return fail(c, id, -32601, `unknown method: ${method}`);
|
|
416
477
|
});
|
|
417
|
-
return {
|
|
478
|
+
return {
|
|
479
|
+
app,
|
|
480
|
+
ready: made.ready,
|
|
481
|
+
brand,
|
|
482
|
+
deps,
|
|
483
|
+
trips,
|
|
484
|
+
members,
|
|
485
|
+
tripIds,
|
|
486
|
+
sessions,
|
|
487
|
+
flush: () => state.flush(),
|
|
488
|
+
};
|
|
418
489
|
};
|
|
419
490
|
/**
|
|
420
491
|
* Every origin the card will try to load a picture from.
|
|
@@ -436,6 +507,19 @@ const hostOf = (url) => {
|
|
|
436
507
|
return [];
|
|
437
508
|
}
|
|
438
509
|
};
|
|
510
|
+
/**
|
|
511
|
+
* The client's address, from the header the edge proxy sets.
|
|
512
|
+
*
|
|
513
|
+
* ⚠️ THE LAST ENTRY, NOT THE FIRST. A client can send its own
|
|
514
|
+
* X-Forwarded-For; the proxy in front of us appends the address it actually
|
|
515
|
+
* saw, so the last entry is the one we can believe and the first may be
|
|
516
|
+
* anything. Without the header - a direct connection inside the host - there
|
|
517
|
+
* is no address, and the limit that reads it is skipped.
|
|
518
|
+
*/
|
|
519
|
+
export const clientIp = (header) => {
|
|
520
|
+
const last = (header ?? '').split(',').at(-1)?.trim();
|
|
521
|
+
return last || undefined;
|
|
522
|
+
};
|
|
439
523
|
/** Read a brand's config from disk. The path is the one `data.file` resolves against. */
|
|
440
524
|
export const loadConfig = (path) => {
|
|
441
525
|
const configPath = resolve(path);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAgB,IAAI,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAqB,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAEL,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAsB,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,yDAAyD;AACzD,EAAE;AACF,yEAAyE;AACzE,4EAA4E;AAC5E,2EAA2E;AAC3E,6DAA6D;AAE7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC7C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,qCAAqC,CAAC;AAC9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,2BAA2B,CAAC;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE;IAC7B,gBAAgB,EAAE,QAAQ;IAC1B,uBAAuB,EAAE,QAAQ;IACjC,yBAAyB,EAAE,IAAI;CACvB,CAAC;AAEX;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC,CAAC;IACrD,GAAG,OAAO;IACV,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,eAAe,EAAE,YAAY,EAAE,EAAE;IAC7D,kBAAkB,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE;CAC5E,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AA0C5C,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAE,IAAmB,EAAE,GAAiB,EAAQ,EAAE;IACxF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,kBAAkB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,gBAAgB,CAAC;YAC/B,IAAI;YACJ,GAAG;YACH,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO;YACL,OAAO;YACP,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO;YAC3B,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YACpC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;YAClB,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;SAC/B,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5B,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAClG,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,oBAAoB,OAAO,uBAAuB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CACzF,CAAC;IACJ,CAAC;IACD,sEAAsE;IACtE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACpC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAC;IACzC,MAAM,KAAK,GAAG;QACZ,QAAQ,EAAE,GAAG,MAAM,YAAY;QAC/B,MAAM,EAAE,GAAG,MAAM,gBAAgB;QACjC,aAAa,EAAE,GAAG,MAAM,iBAAiB;KAC1C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,GAAG,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,qFAAqF,CACnK,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC;QAC9B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE;YACX,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACjC,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;SAChD;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG;KACJ,CAAC,CAAC;IACH,yEAAyE;IACzE,mEAAmE;IACnE,0EAA0E;IAC1E,yCAAyC;IACzC,MAAM,QAAQ,GAAG,OAAO,CACtB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAChD,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,QAAQ,CACpC,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,MAAM;QACN,QAAQ;QACR,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG;KACJ,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,kBAAkB,CAAC;QACjC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM;QACN,OAAO;QACP,KAAK;QACL,UAAU;QACV,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,MAAM;QACtC,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI;QAC9B,EAAE,EAAE,GAAG,CAAC,QAAQ,IAAI,eAAe;QACnC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG;KACJ,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QAC9B,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,IAAI,OAAO,CAAC,KAAK,EAAE;gBAAE,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3C,CAAC,CAAC;QACF,WAAW,EAAE,CAAC;QACd,WAAW,CAAC,WAAW,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IAClD,CAAC;IACD,uEAAuE;IACvE,IAAI,OAAsD,CAAC;IAC3D,OAAO;QACL,OAAO;QACP,YAAY,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC9C,OAAO,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;YAClE,CAAC;YACD,OAAO,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI;QAC9B,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE;QAC9B,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACzF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAmB,EAAe,EAAE;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAE3C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,IAAI,iBAAiB,CAAC;IACvD,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAE/B,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CACvF,KAAK,EACL,EAAE,CACH,CAAC;IACF,MAAM,IAAI,GAAa;QACrB,OAAO;QACP,KAAK;QACL,OAAO;QACP,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU;QACpC,MAAM;QACN,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxE,CAAC;IAEF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAClD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,MAAM,cAAc,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACxC,6EAA6E;IAC7E,8EAA8E;IAC9E,wBAAwB;IACxB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAS,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7E,4EAA4E;IAC5E,mDAAmD;IACnD,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAEnD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,MAAM,IAAI,GAAG,CAAC,IAAa,EAAkC,EAAE;QAC7D,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAClE,oDAAoD;YACpD,6DAA6D;YAC7D,iDAAiD;YACjD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9D,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,uBAAwB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9E,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IACF,yEAAyE;IACzE,wEAAwE;IACxE,0EAA0E;IAC1E,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,KAAK;YACV,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,cAAc,EAAE,WAAW;gBAC3B,eAAe,EAAE,uBAAuB;aACzC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,KAAK;YACV,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,cAAc,EAAE,WAAW;gBAC3B,eAAe,EAAE,uBAAuB;aACzC,CAAC;YACJ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACxD,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACnF,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1D,wEAAwE;IACxE,6EAA6E;IAC7E,4EAA4E;IAC5E,uEAAuE;IACvE,0DAA0D;IAC1D,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;QACpB,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE;QACzB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;KACvB,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7C,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,EAAE,CAC/B,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CACrF,CAAC;IACF,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACpB,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CACrF,CAAC;IAEF,4EAA4E;IAC5E,8CAA8C;IAC9C,MAAM,EAAE,GAAG,CAAC,CAAU,EAAE,EAAW,EAAE,MAAe,EAAE,EAAE,CACtD,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,CAAC,CAAU,EAAE,EAAW,EAAE,IAAY,EAAE,OAAe,EAAE,EAAE,CACtE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAEvE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;QAC3B,IAAI,IAAyE,CAAC;QAC9E,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAEpC,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5B,wEAAwE;YACxE,yEAAyE;YACzE,gDAAgD;YAChD,EAAE;YACF,wEAAwE;YACxE,qEAAqE;YACrE,yEAAyE;YACzE,uEAAuE;YACvE,mEAAmE;YACnE,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;YAC/B,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;YACtC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;gBACf,eAAe,EAAE,gBAAgB;gBACjC,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;gBAC1C,UAAU,EAAE;oBACV,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;oBACxB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;oBAC1B,OAAO,EAAE,OAAO;oBAChB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,SAAS;oBACjD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ;wBACxB,CAAC,CAAC;4BACE,KAAK,EAAE;gCACL,EAAE,GAAG,EAAE,GAAG,SAAS,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE;6BAC5E;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;iBACR;gBACD,+DAA+D;gBAC/D,YAAY,EAAE,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;aAC7C,CAAC,CAAC;QACL,CAAC;QAED,sEAAsE;QACtE,yEAAyE;QACzE,wEAAwE;QACxE,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,MAAM,KAAK,2BAA2B;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAErE,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;gBACf,KAAK,EAAE,SAAS,CACd,KAAK,EACL,cAAc,EACd,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAC5C,UAAU,CACX;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;gBACf,SAAS,EAAE;oBACT;wBACE,GAAG,EAAE,QAAQ;wBACb,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,UAAU;wBAC/B,WAAW,EAAE,QAAQ,KAAK,CAAC,KAAK,CAAC,UAAU,oDAAoD;wBAC/F,QAAQ,EAAE,SAAS;wBACnB,KAAK,EAAE,IAAI,EAAE;qBACd;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,MAAM,CAAE,MAAwC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;YACzE,sEAAsE;YACtE,qEAAqE;YACrE,uEAAuE;YACvE,uEAAuE;YACvE,uEAAuE;YACvE,0EAA0E;YAC1E,qDAAqD;YACrD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,qBAAqB,CAAC;gBACxC,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,qBAAqB,GAAG,EAAE,CAAC,CAAC;YACzD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;gBACf,QAAQ,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;aAC/E,CAAC,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAE,MAAyC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAC5E,MAAM,IAAI,GAAG,CAAE,MAA8C,EAAE,SAAS,IAAI,EAAE,CAG7E,CAAC;YACF,kEAAkE;YAClE,kEAAkE;YAClE,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;oBACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,oCAAoC,EAAE,CAAC;oBAC9E,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,QAAQ,UAAU,EAAE,EAAE,CAAC;YACzE,yEAAyE;YACzE,kCAAkC;YAClC,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACpF,MAAM,GAAG,GAAG,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC7E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE;oBACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;oBAC9C,iBAAiB,EAAE,MAAM,CAAC,UAAU;oBACpC,qEAAqE;oBACrE,mEAAmE;oBACnE,wDAAwD;oBACxD,KAAK,EAAE;wBACL,CAAC,aAAa,CAAC,EAAE;4BACf,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;4BAC1B,KAAK,EAAE,KAAK,CAAC,MAAM;4BACnB,gEAAgE;4BAChE,6DAA6D;4BAC7D,+DAA+D;4BAC/D,iEAAiE;4BACjE,4DAA4D;4BAC5D,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACrB,CAAC,CAAC,IAAI,KAAK,MAAM;gCACf,CAAC,CAAC;oCACE,IAAI,EAAE,MAAM;oCACZ,OAAO,EAAE,CAAC,CAAC,OAAO;oCAClB,OAAO,EAAE,CAAC,CAAC,MAAM;oCACjB,IAAI,EAAE,CAAC,CAAC,IAAI;oCACZ,QAAQ,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC;iCACvB;gCACH,CAAC,CAAC;oCACE,IAAI,EAAE,OAAO;oCACb,OAAO,EAAE,CAAC,CAAC,OAAO;oCAClB,QAAQ,EAAE,CAAC,CAAC,OAAO;oCACnB,QAAQ,EAAE,CAAC,CAAC,QAAQ;iCACrB,CACN;yBACF;wBACD,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACtC;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,mBAAmB,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC1E,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,MAA+D,EACrD,EAAE,CAAC;IACb,GAAG,IAAI,GAAG,CACR,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC9F;CACF,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,GAAY,EAAY,EAAE;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,yFAAyF;AACzF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAA+C,EAAE;IACtF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAgB,EAAE,UAAU,EAAE,CAAC;AAC7F,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { StateFile } from './state.js';
|
|
2
|
+
/** An id unused this long is forgotten; a conversation picked up after that starts a new session. */
|
|
3
|
+
export declare const SESSION_TTL_MS: number;
|
|
4
|
+
export declare class Sessions {
|
|
5
|
+
private readonly now;
|
|
6
|
+
private readonly file?;
|
|
7
|
+
/** Id → last used. Insertion order is use order: a touch re-inserts. */
|
|
8
|
+
private readonly seen;
|
|
9
|
+
private sweptAt;
|
|
10
|
+
constructor(now?: () => number, file?: StateFile | undefined);
|
|
11
|
+
/** A new id, ours. */
|
|
12
|
+
issue(): string;
|
|
13
|
+
/** Whether this is an id we issued and still keep - and, if so, that it was just used. */
|
|
14
|
+
known(id: string): boolean;
|
|
15
|
+
get size(): number;
|
|
16
|
+
/** At most once an hour: a walk over a hundred thousand ids is not free. */
|
|
17
|
+
private sweep;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAoB5C,qGAAqG;AACrG,eAAO,MAAM,cAAc,QAAkB,CAAC;AAU9C,qBAAa,QAAQ;IAMjB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IANxB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,OAAO,CAAK;gBAGD,GAAG,GAAE,MAAM,MAAyB,EACpC,IAAI,CAAC,EAAE,SAAS,YAAA;IAUnC,sBAAsB;IACtB,KAAK,IAAI,MAAM;IAaf,0FAA0F;IAC1F,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAiB1B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,4EAA4E;IAC5E,OAAO,CAAC,KAAK;CAUd"}
|