@ifc-lite/mcp 0.22.1 → 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.
Files changed (165) hide show
  1. package/README.md +82 -0
  2. package/dist/cli.js +2 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/context.d.ts.map +1 -1
  5. package/dist/context.js +5 -0
  6. package/dist/context.js.map +1 -1
  7. package/dist/errors.d.ts +2 -0
  8. package/dist/errors.d.ts.map +1 -1
  9. package/dist/errors.js +2 -0
  10. package/dist/errors.js.map +1 -1
  11. package/dist/headless-backend-align.d.ts +6 -0
  12. package/dist/headless-backend-align.d.ts.map +1 -0
  13. package/dist/headless-backend-align.js +35 -0
  14. package/dist/headless-backend-align.js.map +1 -0
  15. package/dist/headless-backend-modelling.d.ts +50 -0
  16. package/dist/headless-backend-modelling.d.ts.map +1 -0
  17. package/dist/headless-backend-modelling.js +128 -0
  18. package/dist/headless-backend-modelling.js.map +1 -0
  19. package/dist/headless-backend-room.d.ts +8 -0
  20. package/dist/headless-backend-room.d.ts.map +1 -0
  21. package/dist/headless-backend-room.js +24 -0
  22. package/dist/headless-backend-room.js.map +1 -0
  23. package/dist/headless-backend-store-stubs.d.ts +5 -4
  24. package/dist/headless-backend-store-stubs.d.ts.map +1 -1
  25. package/dist/headless-backend-store-stubs.js +1 -17
  26. package/dist/headless-backend-store-stubs.js.map +1 -1
  27. package/dist/headless-backend-store.d.ts +8 -0
  28. package/dist/headless-backend-store.d.ts.map +1 -0
  29. package/dist/headless-backend-store.js +38 -0
  30. package/dist/headless-backend-store.js.map +1 -0
  31. package/dist/headless-backend.d.ts +4 -1
  32. package/dist/headless-backend.d.ts.map +1 -1
  33. package/dist/headless-backend.js +8 -33
  34. package/dist/headless-backend.js.map +1 -1
  35. package/dist/headless-native-geometry.d.ts +6 -0
  36. package/dist/headless-native-geometry.d.ts.map +1 -0
  37. package/dist/headless-native-geometry.js +31 -0
  38. package/dist/headless-native-geometry.js.map +1 -0
  39. package/dist/headless-room-geometry.d.ts +9 -0
  40. package/dist/headless-room-geometry.d.ts.map +1 -0
  41. package/dist/headless-room-geometry.js +66 -0
  42. package/dist/headless-room-geometry.js.map +1 -0
  43. package/dist/protocol/types.d.ts +1 -0
  44. package/dist/protocol/types.d.ts.map +1 -1
  45. package/dist/resources/providers.d.ts.map +1 -1
  46. package/dist/resources/providers.js +10 -1
  47. package/dist/resources/providers.js.map +1 -1
  48. package/dist/server.d.ts.map +1 -1
  49. package/dist/server.js +5 -17
  50. package/dist/server.js.map +1 -1
  51. package/dist/session-cleanup.d.ts +5 -0
  52. package/dist/session-cleanup.d.ts.map +1 -0
  53. package/dist/session-cleanup.js +36 -0
  54. package/dist/session-cleanup.js.map +1 -0
  55. package/dist/test/live-tool-session.d.ts +9 -0
  56. package/dist/test/live-tool-session.d.ts.map +1 -0
  57. package/dist/test/live-tool-session.js +30 -0
  58. package/dist/test/live-tool-session.js.map +1 -0
  59. package/dist/tools/bcf.js +2 -2
  60. package/dist/tools/bcf.js.map +1 -1
  61. package/dist/tools/copy-elements.d.ts +4 -0
  62. package/dist/tools/copy-elements.d.ts.map +1 -0
  63. package/dist/tools/copy-elements.js +76 -0
  64. package/dist/tools/copy-elements.js.map +1 -0
  65. package/dist/tools/design-place.d.ts +3 -0
  66. package/dist/tools/design-place.d.ts.map +1 -0
  67. package/dist/tools/design-place.js +79 -0
  68. package/dist/tools/design-place.js.map +1 -0
  69. package/dist/tools/discovery.js +3 -3
  70. package/dist/tools/discovery.js.map +1 -1
  71. package/dist/tools/export.js +7 -7
  72. package/dist/tools/export.js.map +1 -1
  73. package/dist/tools/flow-ai.d.ts +6 -0
  74. package/dist/tools/flow-ai.d.ts.map +1 -0
  75. package/dist/tools/flow-ai.js +23 -0
  76. package/dist/tools/flow-ai.js.map +1 -0
  77. package/dist/tools/flow-host.d.ts +1 -1
  78. package/dist/tools/flow-host.d.ts.map +1 -1
  79. package/dist/tools/flow-host.js +5 -1
  80. package/dist/tools/flow-host.js.map +1 -1
  81. package/dist/tools/flow-review-host.d.ts +28 -0
  82. package/dist/tools/flow-review-host.d.ts.map +1 -0
  83. package/dist/tools/flow-review-host.js +142 -0
  84. package/dist/tools/flow-review-host.js.map +1 -0
  85. package/dist/tools/flow.d.ts.map +1 -1
  86. package/dist/tools/flow.js +147 -93
  87. package/dist/tools/flow.js.map +1 -1
  88. package/dist/tools/hosted-edit.d.ts +4 -0
  89. package/dist/tools/hosted-edit.d.ts.map +1 -0
  90. package/dist/tools/hosted-edit.js +37 -0
  91. package/dist/tools/hosted-edit.js.map +1 -0
  92. package/dist/tools/hosted-place.d.ts +3 -0
  93. package/dist/tools/hosted-place.d.ts.map +1 -0
  94. package/dist/tools/hosted-place.js +63 -0
  95. package/dist/tools/hosted-place.js.map +1 -0
  96. package/dist/tools/ids-accessor.d.ts +2 -1
  97. package/dist/tools/ids-accessor.d.ts.map +1 -1
  98. package/dist/tools/ids-accessor.js.map +1 -1
  99. package/dist/tools/ids-authoring-model.d.ts +3 -0
  100. package/dist/tools/ids-authoring-model.d.ts.map +1 -0
  101. package/dist/tools/ids-authoring-model.js +112 -0
  102. package/dist/tools/ids-authoring-model.js.map +1 -0
  103. package/dist/tools/ids-authoring.d.ts +3 -0
  104. package/dist/tools/ids-authoring.d.ts.map +1 -0
  105. package/dist/tools/ids-authoring.js +202 -0
  106. package/dist/tools/ids-authoring.js.map +1 -0
  107. package/dist/tools/ids-schema.d.ts +3 -0
  108. package/dist/tools/ids-schema.d.ts.map +1 -0
  109. package/dist/tools/ids-schema.js +91 -0
  110. package/dist/tools/ids-schema.js.map +1 -0
  111. package/dist/tools/index.d.ts +5 -2
  112. package/dist/tools/index.d.ts.map +1 -1
  113. package/dist/tools/index.js +8 -2
  114. package/dist/tools/index.js.map +1 -1
  115. package/dist/tools/layer-store.d.ts +2 -0
  116. package/dist/tools/layer-store.d.ts.map +1 -1
  117. package/dist/tools/layer-store.js +4 -0
  118. package/dist/tools/layer-store.js.map +1 -1
  119. package/dist/tools/mutate.d.ts.map +1 -1
  120. package/dist/tools/mutate.js +20 -64
  121. package/dist/tools/mutate.js.map +1 -1
  122. package/dist/tools/mutation-undo.d.ts +6 -0
  123. package/dist/tools/mutation-undo.d.ts.map +1 -0
  124. package/dist/tools/mutation-undo.js +63 -0
  125. package/dist/tools/mutation-undo.js.map +1 -0
  126. package/dist/tools/physical-edit.d.ts +4 -0
  127. package/dist/tools/physical-edit.d.ts.map +1 -0
  128. package/dist/tools/physical-edit.js +77 -0
  129. package/dist/tools/physical-edit.js.map +1 -0
  130. package/dist/tools/query-tools.d.ts +3 -0
  131. package/dist/tools/query-tools.d.ts.map +1 -0
  132. package/dist/tools/query-tools.js +8 -0
  133. package/dist/tools/query-tools.js.map +1 -0
  134. package/dist/tools/query.d.ts +1 -1
  135. package/dist/tools/query.d.ts.map +1 -1
  136. package/dist/tools/query.js +4 -4
  137. package/dist/tools/query.js.map +1 -1
  138. package/dist/tools/room-command.d.ts +6 -0
  139. package/dist/tools/room-command.d.ts.map +1 -0
  140. package/dist/tools/room-command.js +75 -0
  141. package/dist/tools/room-command.js.map +1 -0
  142. package/dist/tools/util.d.ts +10 -0
  143. package/dist/tools/util.d.ts.map +1 -1
  144. package/dist/tools/util.js +13 -1
  145. package/dist/tools/util.js.map +1 -1
  146. package/dist/tools/validation.d.ts +9 -0
  147. package/dist/tools/validation.d.ts.map +1 -1
  148. package/dist/tools/validation.js +3 -3
  149. package/dist/tools/validation.js.map +1 -1
  150. package/dist/tools/wall-join.d.ts +3 -0
  151. package/dist/tools/wall-join.d.ts.map +1 -0
  152. package/dist/tools/wall-join.js +39 -0
  153. package/dist/tools/wall-join.js.map +1 -0
  154. package/dist/transport/http-helpers.d.ts +85 -0
  155. package/dist/transport/http-helpers.d.ts.map +1 -0
  156. package/dist/transport/http-helpers.js +149 -0
  157. package/dist/transport/http-helpers.js.map +1 -0
  158. package/dist/transport/http.d.ts +14 -1
  159. package/dist/transport/http.d.ts.map +1 -1
  160. package/dist/transport/http.js +80 -90
  161. package/dist/transport/http.js.map +1 -1
  162. package/dist/validate.d.ts +1 -1
  163. package/dist/validate.js +3 -0
  164. package/dist/validate.js.map +1 -1
  165. package/package.json +24 -21
@@ -0,0 +1,149 @@
1
+ /* This Source Code Form is subject to the terms of the Mozilla Public
2
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
4
+ /**
5
+ * Strict scope identity check used when reusing an HTTP session — both the
6
+ * permission set and any narrowing (model_ids, user, session) must match
7
+ * what the session was created with. We sort the scopes set so callers
8
+ * that pass them in different orders still compare equal.
9
+ */
10
+ export function sameScope(a, b) {
11
+ if (a === b)
12
+ return true;
13
+ if (a.user !== b.user || a.session !== b.session)
14
+ return false;
15
+ const as = [...a.scopes].sort();
16
+ const bs = [...b.scopes].sort();
17
+ if (as.length !== bs.length || as.some((s, i) => s !== bs[i]))
18
+ return false;
19
+ const am = a.modelIds ? [...a.modelIds].sort() : undefined;
20
+ const bm = b.modelIds ? [...b.modelIds].sort() : undefined;
21
+ if ((am?.length ?? 0) !== (bm?.length ?? 0))
22
+ return false;
23
+ if (am && bm && am.some((m, i) => m !== bm[i]))
24
+ return false;
25
+ return true;
26
+ }
27
+ /**
28
+ * Reflect CORS headers ONLY when the request carries an Origin we explicitly
29
+ * allow. We never emit a wildcard `Access-Control-Allow-Origin` — that would
30
+ * let any web page read JSON-RPC responses cross-origin. When `origin` is not
31
+ * allowlisted we emit no CORS headers, so the browser blocks the response.
32
+ */
33
+ export function setCors(res, origin, allowed) {
34
+ if (!origin || !allowed.has(origin))
35
+ return;
36
+ res.setHeader('Access-Control-Allow-Origin', origin);
37
+ res.setHeader('Vary', 'Origin');
38
+ res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS');
39
+ res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Mcp-Session-Id');
40
+ res.setHeader('Access-Control-Expose-Headers', 'Mcp-Session-Id');
41
+ }
42
+ /**
43
+ * Extract the host name from a `Host` header, stripping the port. Handles the
44
+ * bracketed IPv6 literal form (`[::1]:8765` -> `::1`).
45
+ */
46
+ export function parseHostHeader(raw) {
47
+ if (!raw)
48
+ return undefined;
49
+ const value = raw.trim();
50
+ if (value.startsWith('[')) {
51
+ const end = value.indexOf(']');
52
+ return end > 0 ? value.slice(1, end) : value;
53
+ }
54
+ return value.split(':')[0];
55
+ }
56
+ /**
57
+ * Refuse limits that would silently disable the policy: with `NaN` every
58
+ * comparison is false, so `maxSessions: NaN` never caps and `sessionIdleMs: NaN`
59
+ * lets a session be reclaimed at once.
60
+ */
61
+ export function assertSessionLimits(opts) {
62
+ const { maxSessions, sessionIdleMs } = opts;
63
+ if (maxSessions !== undefined && !(Number.isInteger(maxSessions) && maxSessions >= 1)) {
64
+ throw new RangeError(`maxSessions must be an integer >= 1, got ${String(maxSessions)}`);
65
+ }
66
+ if (sessionIdleMs !== undefined && !(Number.isFinite(sessionIdleMs) && sessionIdleMs >= 0)) {
67
+ throw new RangeError(`sessionIdleMs must be a finite number >= 0, got ${String(sessionIdleMs)}`);
68
+ }
69
+ }
70
+ export const DEFAULT_MAX_SESSIONS = 1000;
71
+ export const DEFAULT_SESSION_IDLE_MS = 30 * 60_000;
72
+ /**
73
+ * Pick up to `need` sessions that are safe to end, oldest `lastSeen` first.
74
+ * Safe means all four hold: no open SSE stream, no request in flight, inactive
75
+ * for at least `idleMs`, and no unpublished layer drafts. Ending a session
76
+ * destroys its drafts and they cannot be recovered, so one that holds any is
77
+ * never a candidate. Single O(n) scan; allocates only for sessions that qualify.
78
+ */
79
+ export function pickReclaimable(sessions, idleMs, need, draftCount, now = Date.now()) {
80
+ if (need <= 0)
81
+ return [];
82
+ const safe = [];
83
+ for (const [id, s] of sessions) {
84
+ if (s.sseClients.size > 0)
85
+ continue;
86
+ if (s.inFlight > 0)
87
+ continue;
88
+ if (now - s.lastSeen < idleMs)
89
+ continue;
90
+ if (draftCount(id) > 0)
91
+ continue;
92
+ safe.push({ id, lastSeen: s.lastSeen });
93
+ }
94
+ safe.sort((x, y) => x.lastSeen - y.lastSeen);
95
+ return safe.slice(0, need).map((c) => c.id);
96
+ }
97
+ /** 503 for an `initialize` at the session limit when no session can be ended safely. */
98
+ export function sendSessionCapacity(res) {
99
+ res.statusCode = 503;
100
+ res.setHeader('Content-Type', 'application/json');
101
+ res.end(JSON.stringify({
102
+ error: 'session-capacity',
103
+ message: 'The server is at its session limit and no session can be ended safely: every one is recently active, has a request in flight or an open event stream, or holds unpublished layer drafts. No session was ended. End a session you no longer need with DELETE, or retry later.',
104
+ }));
105
+ }
106
+ /** 404 for a session id we do not hold; tells the client why it may be gone and what to do. */
107
+ export function sendUnknownSession(res) {
108
+ res.statusCode = 404;
109
+ res.setHeader('Content-Type', 'application/json');
110
+ res.end(JSON.stringify({
111
+ error: 'unknown-session',
112
+ message: 'Unknown session. It was ended with DELETE, or the server ended it after it sat idle, holding no unpublished layer drafts, while the server was at its session limit. Send initialize without Mcp-Session-Id to start a new session.',
113
+ }));
114
+ }
115
+ export function writeSse(res, message) {
116
+ res.write(`data: ${JSON.stringify(message)}\n\n`);
117
+ }
118
+ /** Reads the request body; `holder` counts as busy while the upload runs and active when it ends, however it ends. */
119
+ export async function readBody(req, max, holder) {
120
+ if (holder)
121
+ holder.inFlight++;
122
+ try {
123
+ return await readBodyChunks(req, max);
124
+ }
125
+ finally {
126
+ if (holder) {
127
+ holder.inFlight--;
128
+ holder.lastSeen = Date.now();
129
+ }
130
+ }
131
+ }
132
+ function readBodyChunks(req, max) {
133
+ return new Promise((resolve, reject) => {
134
+ let total = 0;
135
+ const chunks = [];
136
+ req.on('data', (chunk) => {
137
+ total += chunk.length;
138
+ if (total > max) {
139
+ reject(new Error('Request body too large'));
140
+ req.destroy();
141
+ return;
142
+ }
143
+ chunks.push(chunk);
144
+ });
145
+ req.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
146
+ req.on('error', reject);
147
+ });
148
+ }
149
+ //# sourceMappingURL=http-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-helpers.js","sourceRoot":"","sources":["../../src/transport/http-helpers.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@
19
19
  import { IncomingMessage } from 'node:http';
20
20
  import { MCPServer } from '../server.js';
21
21
  import { AuthScope } from '../auth/scope.js';
22
+ import { type SessionCapacityOptions } from './http-helpers.js';
22
23
  export interface HttpAuthenticator {
23
24
  /**
24
25
  * Called for every inbound request. Returns the auth scope for the caller,
@@ -38,7 +39,7 @@ export interface SessionFactory {
38
39
  */
39
40
  build(scope: AuthScope, sessionId: string): Promise<MCPServer> | MCPServer;
40
41
  }
41
- export interface HttpTransportOptions {
42
+ export interface HttpTransportOptions extends SessionCapacityOptions {
42
43
  port: number;
43
44
  host?: string;
44
45
  authenticator: HttpAuthenticator;
@@ -56,6 +57,8 @@ export interface HttpTransportOptions {
56
57
  export declare class HttpTransport {
57
58
  private server;
58
59
  private sessions;
60
+ /** Sessions whose factory call is in flight: not yet in `sessions`, but already spoken for. */
61
+ private building;
59
62
  private opts;
60
63
  /** Browser Origins permitted to read responses (empty = none). */
61
64
  private allowedOrigins;
@@ -74,7 +77,17 @@ export declare class HttpTransport {
74
77
  port(): number | undefined;
75
78
  close(): Promise<void>;
76
79
  private handle;
80
+ /** Run one message; the session counts as busy until it settles, and active when it does. */
81
+ private dispatch;
77
82
  private openSse;
83
+ /** An open stream keeps its session from being reclaimed; idle time starts when it closes. */
84
+ private trackSse;
85
+ /**
86
+ * Whether a new session fits. Live sessions and pending builds both count.
87
+ * At the cap, only a session that is safe to end (see `pickReclaimable`)
88
+ * makes room; with none, the answer is no and nothing is ended.
89
+ */
90
+ private makeRoomForSession;
78
91
  private endSession;
79
92
  private makeSinkFor;
80
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAgB,eAAe,EAA0B,MAAM,WAAW,CAAC;AAKlF,OAAO,EAAE,SAAS,EAAuB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CAClF;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;CAC5E;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,iBAAiB,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAUD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,IAAI,CAAuB;IACnC,kEAAkE;IAClE,OAAO,CAAC,cAAc,CAAc;IACpC,4DAA4D;IAC5D,OAAO,CAAC,YAAY,CAAc;IAClC;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAAU;gBAEtB,IAAI,EAAE,oBAAoB;IA6BtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvB,wEAAwE;IACxE,IAAI,IAAI,MAAM,GAAG,SAAS;IAK1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAWR,MAAM;IAkJpB,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,WAAW;CAUpB;AA0ED,qBAAa,eAAgB,YAAW,iBAAiB;IAC3C,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAElD,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;CAMrD;AAED,4EAA4E;AAC5E,qBAAa,YAAa,YAAW,iBAAiB;IACxC,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,SAAS;IACpC,YAAY,IAAI,SAAS;CAC1B"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAgB,eAAe,EAA0B,MAAM,WAAW,CAAC;AAKlF,OAAO,EAAE,SAAS,EAAuB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAyL,KAAK,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEvP,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;CAClF;AAED,MAAM,WAAW,cAAc;IAC7B;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;CAC5E;AAED,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,iBAAiB,CAAC;IACjC,cAAc,EAAE,cAAc,CAAC;IAC/B,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAaD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,+FAA+F;IAC/F,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,IAAI,CAAuB;IACnC,kEAAkE;IAClE,OAAO,CAAC,cAAc,CAAc;IACpC,4DAA4D;IAC5D,OAAO,CAAC,YAAY,CAAc;IAClC;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAAU;gBAEtB,IAAI,EAAE,oBAAoB;IA8BtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvB,wEAAwE;IACxE,IAAI,IAAI,MAAM,GAAG,SAAS;IAK1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAWR,MAAM;IAkKpB,6FAA6F;YAC/E,QAAQ;IAUtB,OAAO,CAAC,OAAO;IAWf,8FAA8F;IAC9F,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,WAAW;CAYpB;AAID,qBAAa,eAAgB,YAAW,iBAAiB;IAC3C,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;IAElD,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;CAMrD;AAED,4EAA4E;AAC5E,qBAAa,YAAa,YAAW,iBAAiB;IACxC,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,SAAS;IACpC,YAAY,IAAI,SAAS;CAC1B"}
@@ -23,9 +23,13 @@ import { createServer } from 'node:http';
23
23
  import { randomUUID } from 'node:crypto';
24
24
  import { errorResponse, parseMessage } from '../protocol/jsonrpc.js';
25
25
  import { JsonRpcErrorCode } from '../protocol/index.js';
26
+ import { draftCount } from '../tools/layer-store.js';
27
+ import { assertSessionLimits, parseHostHeader, pickReclaimable, readBody, sameScope, sendSessionCapacity, sendUnknownSession, writeSse, setCors, DEFAULT_MAX_SESSIONS, DEFAULT_SESSION_IDLE_MS } from './http-helpers.js';
26
28
  export class HttpTransport {
27
29
  server;
28
30
  sessions = new Map();
31
+ /** Sessions whose factory call is in flight: not yet in `sessions`, but already spoken for. */
32
+ building = 0;
29
33
  opts;
30
34
  /** Browser Origins permitted to read responses (empty = none). */
31
35
  allowedOrigins;
@@ -39,6 +43,7 @@ export class HttpTransport {
39
43
  */
40
44
  enforceHostCheck;
41
45
  constructor(opts) {
46
+ assertSessionLimits(opts);
42
47
  this.opts = opts;
43
48
  this.allowedOrigins = new Set(opts.allowedOrigins ?? []);
44
49
  // A wildcard bind has no single hostname to allowlist — real clients send
@@ -115,17 +120,20 @@ export class HttpTransport {
115
120
  // Open an SSE channel for an existing session. Same identity rule as
116
121
  // POST: a leaked Mcp-Session-Id must not let a differently-scoped
117
122
  // token attach to the victim's event stream.
118
- if (!sessionId || !this.sessions.has(sessionId)) {
119
- res.statusCode = 404;
120
- res.end('Unknown session');
123
+ if (!sessionId) {
124
+ res.statusCode = 400;
125
+ res.end('Mcp-Session-Id required');
121
126
  return;
122
127
  }
123
128
  const session = this.sessions.get(sessionId);
129
+ if (!session)
130
+ return sendUnknownSession(res);
124
131
  if (!sameScope(session.scope, scope)) {
125
132
  res.statusCode = 403;
126
133
  res.end('session scope mismatch');
127
134
  return;
128
135
  }
136
+ session.lastSeen = Date.now();
129
137
  this.openSse(session, res);
130
138
  return;
131
139
  }
@@ -152,7 +160,11 @@ export class HttpTransport {
152
160
  res.end('Method Not Allowed');
153
161
  return;
154
162
  }
155
- const body = await readBody(req, this.opts.maxBodyBytes ?? 32 * 1024 * 1024);
163
+ // A POST still uploading its body counts as in flight for the session it
164
+ // names (same scope only), so an `initialize` at the cap cannot reclaim it
165
+ // between the headers and the last byte.
166
+ const named = sessionId ? this.sessions.get(sessionId) : undefined;
167
+ const body = await readBody(req, this.opts.maxBodyBytes ?? 32 * 1024 * 1024, named && sameScope(named.scope, scope) ? named : undefined);
156
168
  const message = parseMessage(body);
157
169
  if (!message) {
158
170
  res.statusCode = 400;
@@ -175,18 +187,35 @@ export class HttpTransport {
175
187
  res.end(JSON.stringify({ error: 'session scope mismatch' }));
176
188
  return;
177
189
  }
190
+ // After the identity check: a refused caller must not keep another
191
+ // principal's session from ever looking idle.
192
+ session.lastSeen = Date.now();
178
193
  }
179
194
  else {
195
+ // A session id we do not hold (DELETEd, reclaimed at the cap, never issued)
196
+ // is the spec's 404 for `initialize` too: re-initialize WITHOUT an id.
197
+ if (sessionId)
198
+ return sendUnknownSession(res);
180
199
  // Per spec, `initialize` is the only request allowed without a session;
181
200
  // the response carries the new Mcp-Session-Id.
182
- const isInitialize = message.method === 'initialize';
183
- if (!isInitialize) {
201
+ if (message.method !== 'initialize') {
184
202
  res.statusCode = 400;
185
203
  res.end('Mcp-Session-Id required');
186
204
  return;
187
205
  }
206
+ if (!this.makeRoomForSession())
207
+ return sendSessionCapacity(res);
188
208
  const newId = randomUUID();
189
- const server = await this.opts.sessionFactory.build(scope, newId);
209
+ // The factory may await, so concurrent initializes would each pass the
210
+ // capacity check above; count the ones still building.
211
+ this.building++;
212
+ let server;
213
+ try {
214
+ server = await this.opts.sessionFactory.build(scope, newId);
215
+ }
216
+ finally {
217
+ this.building--;
218
+ }
190
219
  // A factory that drops the session id would put every HTTP session
191
220
  // on the shared local layer workspace (cross-session reads/writes,
192
221
  // no disposal) — refuse the deployment bug instead of running unsafe.
@@ -198,7 +227,7 @@ export class HttpTransport {
198
227
  }));
199
228
  return;
200
229
  }
201
- session = { id: newId, server, scope, sseClients: new Set(), createdAt: Date.now() };
230
+ session = { id: newId, server, scope, sseClients: new Set(), lastSeen: Date.now(), inFlight: 0 };
202
231
  session.server.attach(this.makeSinkFor(session));
203
232
  this.sessions.set(newId, session);
204
233
  res.setHeader('Mcp-Session-Id', newId);
@@ -210,34 +239,65 @@ export class HttpTransport {
210
239
  res.setHeader('Content-Type', 'text/event-stream');
211
240
  res.setHeader('Cache-Control', 'no-cache, no-transform');
212
241
  res.setHeader('Connection', 'keep-alive');
213
- session.sseClients.add(res);
214
- const response = await session.server.handleMessage(message);
215
- if (response)
216
- writeSse(res, response);
217
242
  // Keep the connection open until client closes; progress notifications
218
- // arrive via the session's sink.
219
- req.on('close', () => session.sseClients.delete(res));
243
+ // arrive via the session's sink. Tracked before the dispatch so a client
244
+ // that leaves mid-call is still removed.
245
+ this.trackSse(session, res);
246
+ const response = await this.dispatch(session, message);
247
+ if (response && !res.writableEnded)
248
+ writeSse(res, response);
220
249
  return;
221
250
  }
222
251
  // Plain JSON response (the common case).
223
- const response = await session.server.handleMessage(message);
252
+ const response = await this.dispatch(session, message);
224
253
  res.statusCode = 200;
225
254
  res.setHeader('Content-Type', 'application/json');
226
255
  res.end(response ? JSON.stringify(response) : '{}');
227
256
  }
257
+ /** Run one message; the session counts as busy until it settles, and active when it does. */
258
+ async dispatch(session, message) {
259
+ session.inFlight++;
260
+ try {
261
+ return await session.server.handleMessage(message);
262
+ }
263
+ finally {
264
+ session.inFlight--;
265
+ session.lastSeen = Date.now();
266
+ }
267
+ }
228
268
  openSse(session, res) {
229
269
  res.statusCode = 200;
230
270
  res.setHeader('Content-Type', 'text/event-stream');
231
271
  res.setHeader('Cache-Control', 'no-cache, no-transform');
232
272
  res.setHeader('Connection', 'keep-alive');
233
273
  res.write(': connected\n\n');
234
- session.sseClients.add(res);
274
+ this.trackSse(session, res);
235
275
  const ka = setInterval(() => res.write(': keepalive\n\n'), 15_000);
276
+ res.on('close', () => clearInterval(ka));
277
+ }
278
+ /** An open stream keeps its session from being reclaimed; idle time starts when it closes. */
279
+ trackSse(session, res) {
280
+ session.sseClients.add(res);
236
281
  res.on('close', () => {
237
282
  session.sseClients.delete(res);
238
- clearInterval(ka);
283
+ session.lastSeen = Date.now();
239
284
  });
240
285
  }
286
+ /**
287
+ * Whether a new session fits. Live sessions and pending builds both count.
288
+ * At the cap, only a session that is safe to end (see `pickReclaimable`)
289
+ * makes room; with none, the answer is no and nothing is ended.
290
+ */
291
+ makeRoomForSession() {
292
+ const max = this.opts.maxSessions ?? DEFAULT_MAX_SESSIONS;
293
+ const need = this.sessions.size + this.building - max + 1;
294
+ if (need <= 0)
295
+ return true;
296
+ const idleMs = this.opts.sessionIdleMs ?? DEFAULT_SESSION_IDLE_MS;
297
+ for (const id of pickReclaimable(this.sessions, idleMs, need, draftCount))
298
+ this.endSession(id);
299
+ return this.sessions.size + this.building < max;
300
+ }
241
301
  endSession(sessionId) {
242
302
  const session = this.sessions.get(sessionId);
243
303
  if (!session)
@@ -255,84 +315,14 @@ export class HttpTransport {
255
315
  try {
256
316
  writeSse(sse, message);
257
317
  }
258
- catch { /* SSE client gone — cleaned up on close */ }
318
+ catch (err) {
319
+ console.error('[ifc-lite-mcp http] event stream write failed', err);
320
+ }
259
321
  }
260
322
  },
261
323
  };
262
324
  }
263
325
  }
264
- /**
265
- * Strict scope identity check used when reusing an HTTP session — both the
266
- * permission set and any narrowing (model_ids, user, session) must match
267
- * what the session was created with. We sort the scopes set so callers
268
- * that pass them in different orders still compare equal.
269
- */
270
- function sameScope(a, b) {
271
- if (a === b)
272
- return true;
273
- if (a.user !== b.user || a.session !== b.session)
274
- return false;
275
- const as = [...a.scopes].sort();
276
- const bs = [...b.scopes].sort();
277
- if (as.length !== bs.length || as.some((s, i) => s !== bs[i]))
278
- return false;
279
- const am = a.modelIds ? [...a.modelIds].sort() : undefined;
280
- const bm = b.modelIds ? [...b.modelIds].sort() : undefined;
281
- if ((am?.length ?? 0) !== (bm?.length ?? 0))
282
- return false;
283
- if (am && bm && am.some((m, i) => m !== bm[i]))
284
- return false;
285
- return true;
286
- }
287
- /**
288
- * Reflect CORS headers ONLY when the request carries an Origin we explicitly
289
- * allow. We never emit a wildcard `Access-Control-Allow-Origin` — that would
290
- * let any web page read JSON-RPC responses cross-origin. When `origin` is not
291
- * allowlisted we emit no CORS headers, so the browser blocks the response.
292
- */
293
- function setCors(res, origin, allowed) {
294
- if (!origin || !allowed.has(origin))
295
- return;
296
- res.setHeader('Access-Control-Allow-Origin', origin);
297
- res.setHeader('Vary', 'Origin');
298
- res.setHeader('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS');
299
- res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Mcp-Session-Id');
300
- res.setHeader('Access-Control-Expose-Headers', 'Mcp-Session-Id');
301
- }
302
- /**
303
- * Extract the host name from a `Host` header, stripping the port. Handles the
304
- * bracketed IPv6 literal form (`[::1]:8765` -> `::1`).
305
- */
306
- function parseHostHeader(raw) {
307
- if (!raw)
308
- return undefined;
309
- const value = raw.trim();
310
- if (value.startsWith('[')) {
311
- const end = value.indexOf(']');
312
- return end > 0 ? value.slice(1, end) : value;
313
- }
314
- return value.split(':')[0];
315
- }
316
- function writeSse(res, message) {
317
- res.write(`data: ${JSON.stringify(message)}\n\n`);
318
- }
319
- async function readBody(req, max) {
320
- return new Promise((resolve, reject) => {
321
- let total = 0;
322
- const chunks = [];
323
- req.on('data', (chunk) => {
324
- total += chunk.length;
325
- if (total > max) {
326
- reject(new Error('Request body too large'));
327
- req.destroy();
328
- return;
329
- }
330
- chunks.push(chunk);
331
- });
332
- req.on('end', () => resolve(Buffer.concat(chunks).toString('utf8')));
333
- req.on('error', reject);
334
- });
335
- }
336
326
  // ── Built-in authenticators ──────────────────────────────────────────────
337
327
  export class BearerTokenAuth {
338
328
  tokens;
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Tiny JSON-Schema input validator (Draft 2020-12 subset).
3
3
  *
4
4
  * We only support the keywords our hand-authored tool schemas use:
5
- * type, properties, required, items, enum, minimum, maximum,
5
+ * type, properties, required, items, enum, minimum, exclusiveMinimum, maximum,
6
6
  * minLength, maxLength, minItems, maxItems, default, anyOf,
7
7
  * additionalProperties.
8
8
  *
package/dist/validate.js CHANGED
@@ -98,6 +98,9 @@ function walk(schema, input, path, errors, fillDefaults = true) {
98
98
  if (schema.minimum !== undefined && input < schema.minimum) {
99
99
  errors.push({ path, message: `Must be >= ${schema.minimum}` });
100
100
  }
101
+ if (schema.exclusiveMinimum !== undefined && input <= schema.exclusiveMinimum) {
102
+ errors.push({ path, message: `Must be > ${schema.exclusiveMinimum}` });
103
+ }
101
104
  if (schema.maximum !== undefined && input > schema.maximum) {
102
105
  errors.push({ path, message: `Must be <= ${schema.maximum}` });
103
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AA2C/D,MAAM,UAAU,aAAa,CAAC,MAAkB,EAAE,KAAc;IAC9D,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACtD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC9C,MAAM,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG,UAAU,EAAE,GAAG,MAAM,CAAC;IAC7D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,wEAAwE;AACxE,4EAA4E;AAC5E,SAAS,IAAI,CAAC,MAAkB,EAAE,KAAc,EAAE,IAAY,EAAE,MAAyB,EAAE,YAAY,GAAG,IAAI;IAC5G,IAAI,YAAY,IAAI,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACxE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAExD,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAc,CAAC,EAAE,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACjH,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5F,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,OAAO,KAAK,EAAE,EAAE,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,2EAA2E;IAC3E,yEAAyE;IACzE,2EAA2E;IAC3E,0EAA0E;IAC1E,wCAAwC;IACxC,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC5C,MAAM,SAAS,GAAsB,EAAE,CAAC;YACxC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAC9C,uEAAuE;YACvE,sEAAsE;YACtE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,IAAI,2CAA2C,MAAM,EAAE,EAAE,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,MAAM,MAAM,GAA4B,EAAE,GAAG,GAAG,EAAE,CAAC;QACnD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3D,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;gBACnE,IAAI,KAAK,KAAK,SAAS;oBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClC,qEAAqE;gBACrE,wEAAwE;gBACxE,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;oBACtD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;gBAChF,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,GAAG,GAAG,KAAkB,CAAC;QAC/B,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,MAAM,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,qBAAqB,MAAM,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAmB,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;QAC7G,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,cAAc,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,uBAAuB,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,sBAAsB,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAAC,CAAS,EAAE,CAAU;IACxC,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,QAAQ,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC;QAC5C,KAAK,QAAQ,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChE,KAAK,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACpE,KAAK,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,SAAS,CAAC;QAC9C,KAAK,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC/E,KAAK,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;QAC/B,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAI,CAAI;IACpB,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAM,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}