@nifrajs/mcp 3.3.0 → 4.0.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.
@@ -150,8 +150,20 @@ export interface McpProtocolOptions {
150
150
  readonly state?: McpProtocolState;
151
151
  readonly signal?: AbortSignal;
152
152
  readonly sendNotification?: (notification: JsonRpcNotification) => void;
153
+ /**
154
+ * Answer a throwing tool with its error message, not only "Tool execution failed". Only for a
155
+ * transport whose caller already has the project, such as a local stdio server: paths, SQL
156
+ * diagnostics and provider responses end up in error messages, so a remote caller never sees them.
157
+ */
158
+ readonly exposeToolErrors?: boolean;
153
159
  }
154
160
  export declare function createMcpProtocolState(): McpProtocolState;
161
+ /** Validate a JSON-RPC request/notification before any transport or method-specific access. */
162
+ export declare function isJsonRpcRequest(value: unknown): value is JsonRpcRequest;
163
+ /** Validate a JSON-RPC response received by a transport-side client hook. Responses are not accepted
164
+ * by {@link handleRpc}; this guard exists for the stdio roots/list answer, which is the one server-
165
+ * initiated request response the CLI consumes itself. */
166
+ export declare function isJsonRpcResponse(value: unknown): value is JsonRpcResponse;
155
167
  /** The protocol version a modern (2026-07-28+) request declares in `_meta`, or `undefined` for a legacy
156
168
  * request. Its presence is what puts the dispatch in modern mode for that one request. */
157
169
  export declare function modernVersionOf(params: Record<string, unknown> | undefined): string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
package/dist/protocol.js CHANGED
@@ -36,6 +36,9 @@ export const MCP_ERROR = {
36
36
  };
37
37
  const META_PROTOCOL_VERSION = "io.modelcontextprotocol/protocolVersion";
38
38
  const META_SERVER_INFO = "io.modelcontextprotocol/serverInfo";
39
+ const MAX_RPC_ID_LENGTH = 128;
40
+ const MAX_RPC_METHOD_LENGTH = 128;
41
+ const MAX_CANCEL_REASON_LENGTH = 512;
39
42
  /** The MIME type a UI resource MUST use so a host recognizes it as an MCP App widget (SEP-1865). */
40
43
  export const UI_MIME = "text/html;profile=mcp-app";
41
44
  /** The `capabilities.extensions` key advertising UI support in the `initialize` result (SEP-1865). */
@@ -50,13 +53,75 @@ export const rpcError = (id, code, message, data) => ({
50
53
  id,
51
54
  error: data !== undefined ? { code, message, data } : { code, message },
52
55
  });
56
+ const MAX_TOOL_ERROR_CHARS = 16_384;
53
57
  export function createMcpProtocolState() {
54
58
  return { activeRequests: new Map() };
55
59
  }
56
60
  function requestKey(id) {
57
61
  if (typeof id === "string")
58
62
  return `s:${id}`;
59
- return typeof id === "number" && Number.isFinite(id) ? `n:${id}` : undefined;
63
+ return typeof id === "number" && Number.isSafeInteger(id) ? `n:${id}` : undefined;
64
+ }
65
+ function record(value) {
66
+ return value !== null && typeof value === "object" && !Array.isArray(value);
67
+ }
68
+ /** Validate a JSON-RPC request/notification before any transport or method-specific access. */
69
+ export function isJsonRpcRequest(value) {
70
+ if (value === null || typeof value !== "object" || Array.isArray(value))
71
+ return false;
72
+ const record = value;
73
+ if (Object.hasOwn(record, "result") || Object.hasOwn(record, "error"))
74
+ return false;
75
+ if (Object.hasOwn(record, "jsonrpc") && record.jsonrpc !== "2.0")
76
+ return false;
77
+ if (typeof record.method !== "string" ||
78
+ record.method.length === 0 ||
79
+ record.method.length > MAX_RPC_METHOD_LENGTH)
80
+ return false;
81
+ if (Object.hasOwn(record, "id")) {
82
+ const id = record.id;
83
+ if (id !== null &&
84
+ typeof id !== "string" &&
85
+ !(typeof id === "number" && Number.isSafeInteger(id)))
86
+ return false;
87
+ if (typeof id === "string" && id.length > MAX_RPC_ID_LENGTH)
88
+ return false;
89
+ }
90
+ return (!Object.hasOwn(record, "params") ||
91
+ (record.params !== null && typeof record.params === "object" && !Array.isArray(record.params)));
92
+ }
93
+ /** Validate a JSON-RPC response received by a transport-side client hook. Responses are not accepted
94
+ * by {@link handleRpc}; this guard exists for the stdio roots/list answer, which is the one server-
95
+ * initiated request response the CLI consumes itself. */
96
+ export function isJsonRpcResponse(value) {
97
+ if (value === null || typeof value !== "object" || Array.isArray(value))
98
+ return false;
99
+ const record = value;
100
+ if (record.jsonrpc !== "2.0")
101
+ return false;
102
+ if (Object.hasOwn(record, "method") || Object.hasOwn(record, "params"))
103
+ return false;
104
+ if (record.id !== null &&
105
+ typeof record.id !== "string" &&
106
+ !(typeof record.id === "number" && Number.isSafeInteger(record.id)))
107
+ return false;
108
+ if (typeof record.id === "string" && record.id.length > MAX_RPC_ID_LENGTH)
109
+ return false;
110
+ const hasResult = Object.hasOwn(record, "result");
111
+ const hasError = Object.hasOwn(record, "error");
112
+ if (hasResult === hasError)
113
+ return false;
114
+ if (!hasError)
115
+ return true;
116
+ const error = record.error;
117
+ if (error === null || typeof error !== "object" || Array.isArray(error))
118
+ return false;
119
+ const errorRecord = error;
120
+ return (typeof errorRecord.code === "number" &&
121
+ Number.isSafeInteger(errorRecord.code) &&
122
+ typeof errorRecord.message === "string" &&
123
+ errorRecord.message.length > 0 &&
124
+ errorRecord.message.length <= MAX_RPC_METHOD_LENGTH);
60
125
  }
61
126
  function metaObject(params) {
62
127
  const meta = params?._meta;
@@ -78,7 +143,9 @@ function progressTokenOf(params) {
78
143
  }
79
144
  function cancellationReason(params) {
80
145
  const reason = params?.reason;
81
- return typeof reason === "string" && reason.length > 0 ? reason : undefined;
146
+ return typeof reason === "string" && reason.length > 0
147
+ ? reason.slice(0, MAX_CANCEL_REASON_LENGTH)
148
+ : undefined;
82
149
  }
83
150
  function linkAbortSignal(parent, child) {
84
151
  if (parent === undefined)
@@ -144,6 +211,8 @@ function toolCallResult(result, tool) {
144
211
  * notification (no reply). Tool errors are reported in-band (`isError`) so the agent can react to them.
145
212
  */
146
213
  export async function handleRpc(message, tools, serverInfo, features = {}, options = {}) {
214
+ if (!isJsonRpcRequest(message))
215
+ return rpcError(null, -32600, "Invalid Request");
147
216
  const { id, method, params } = message;
148
217
  const isNotification = id === undefined;
149
218
  const rid = id ?? null;
@@ -255,7 +324,10 @@ export async function handleRpc(message, tools, serverInfo, features = {}, optio
255
324
  const tool = tools.find((t) => t.name === name);
256
325
  if (!tool)
257
326
  return rpcError(rid, -32602, `unknown tool: ${String(name)}`);
258
- const args = params?.arguments ?? {};
327
+ const suppliedArguments = params?.arguments;
328
+ if (suppliedArguments !== undefined && !record(suppliedArguments))
329
+ return rpcError(rid, -32602, "tool arguments must be an object");
330
+ const args = suppliedArguments ?? {};
259
331
  const controller = new AbortController();
260
332
  const key = requestKey(id);
261
333
  if (key !== undefined && state.activeRequests.has(key)) {
@@ -299,15 +371,22 @@ export async function handleRpc(message, tools, serverInfo, features = {}, optio
299
371
  reportProgress(1, 1);
300
372
  return reply(toolCallResult(result, tool));
301
373
  }
302
- catch (err) {
374
+ catch (error) {
303
375
  if (controller.signal.aborted) {
304
376
  return reply({
305
377
  content: [{ type: "text", text: abortMessage(controller.signal) }],
306
378
  isError: true,
307
379
  });
308
380
  }
309
- const msg = err instanceof Error ? err.message : String(err);
310
- return reply({ content: [{ type: "text", text: `Error: ${msg}` }], isError: true });
381
+ // Handler errors are application-internal data. Never reflect their messages to a remote
382
+ // MCP caller: paths, SQL diagnostics, provider responses, and secrets commonly end up there.
383
+ const detail = options.exposeToolErrors === true && error instanceof Error && error.message !== ""
384
+ ? `: ${error.message.slice(0, MAX_TOOL_ERROR_CHARS)}`
385
+ : "";
386
+ return reply({
387
+ content: [{ type: "text", text: `Tool execution failed${detail}` }],
388
+ isError: true,
389
+ });
311
390
  }
312
391
  finally {
313
392
  cleanupAbort();
@@ -362,16 +441,19 @@ export async function handleRpc(message, tools, serverInfo, features = {}, optio
362
441
  const prompt = prompts.find((p) => p.name === name);
363
442
  if (!prompt)
364
443
  return rpcError(rid, -32602, `unknown prompt: ${String(name)}`);
365
- const args = params?.arguments ?? {};
444
+ const suppliedArguments = params?.arguments;
445
+ if (suppliedArguments !== undefined && !record(suppliedArguments))
446
+ return rpcError(rid, -32602, "prompt arguments must be an object");
447
+ const args = suppliedArguments ?? {};
366
448
  try {
367
449
  return reply({
368
450
  description: prompt.description,
369
451
  messages: await prompt.handler(args),
370
452
  });
371
453
  }
372
- catch (err) {
373
- const msg = err instanceof Error ? err.message : String(err);
374
- return rpcError(rid, -32000, msg);
454
+ catch {
455
+ // Prompt handlers have the same trust boundary as tools; expose only a stable protocol error.
456
+ return rpcError(rid, -32000, "Prompt execution failed");
375
457
  }
376
458
  }
377
459
  default:
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;4CAG4C;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAA;AAC5C;iHACiH;AACjH,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IAC1C,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;CACb,CAAC,CAAA;AAEF;;kGAEkG;AAClG,MAAM,CAAC,MAAM,uBAAuB,GAAG,YAAY,CAAA;AACnD,+GAA+G;AAC/G,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,eAAe,EAAE,CAAC,KAAK;IACvB,mBAAmB,EAAE,CAAC,KAAK;IAC3B;wGACoG;IACpG,YAAY,EAAE,CAAC,KAAK;CACZ,CAAA;AACV,MAAM,qBAAqB,GAAG,yCAAyC,CAAA;AACvE,MAAM,gBAAgB,GAAG,oCAAoC,CAAA;AAC7D,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAC7B,MAAM,qBAAqB,GAAG,GAAG,CAAA;AACjC,MAAM,wBAAwB,GAAG,GAAG,CAAA;AAEpC,oGAAoG;AACpG,MAAM,CAAC,MAAM,OAAO,GAAG,2BAA2B,CAAA;AAClD,sGAAsG;AACtG,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAA;AA+G5D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAa,EAAE,KAAc,EAAmB,EAAE,CAAC,CAAC;IAC5E,OAAO,EAAE,KAAK;IACd,EAAE;IACF,MAAM,EAAE,KAAK;CACd,CAAC,CAAA;AACF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,EAAa,EACb,IAAY,EACZ,OAAe,EACf,IAAc,EACG,EAAE,CAAC,CAAC;IACrB,OAAO,EAAE,KAAK;IACd,EAAE;IACF,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE;CACxE,CAAC,CAAA;AAkBF,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAEnC,MAAM,UAAU,sBAAsB;IACpC,OAAO,EAAE,cAAc,EAAE,IAAI,GAAG,EAAE,EAAE,CAAA;AACtC,CAAC;AAED,SAAS,UAAU,CAAC,EAAW;IAC7B,IAAI,OAAO,EAAE,KAAK,QAAQ;QAAE,OAAO,KAAK,EAAE,EAAE,CAAA;IAC5C,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACnF,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACrF,MAAM,MAAM,GAAG,KAAgC,CAAA;IAC/C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACnF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAC9E,IACE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QACjC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,qBAAqB;QAE5C,OAAO,KAAK,CAAA;IACd,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAA;QACpB,IACE,EAAE,KAAK,IAAI;YACX,OAAO,EAAE,KAAK,QAAQ;YACtB,CAAC,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAErD,OAAO,KAAK,CAAA;QACd,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,iBAAiB;YAAE,OAAO,KAAK,CAAA;IAC3E,CAAC;IACD,OAAO,CACL,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;QAChC,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAC/F,CAAA;AACH,CAAC;AAED;;yDAEyD;AACzD,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACrF,MAAM,MAAM,GAAG,KAAgC,CAAA;IAC/C,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAC1C,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IACpF,IACE,MAAM,CAAC,EAAE,KAAK,IAAI;QAClB,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ;QAC7B,CAAC,CAAC,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEnE,OAAO,KAAK,CAAA;IACd,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,iBAAiB;QAAE,OAAO,KAAK,CAAA;IACvF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/C,IAAI,SAAS,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IACxC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;IAC1B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACrF,MAAM,WAAW,GAAG,KAAgC,CAAA;IACpD,OAAO,CACL,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ;QACpC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC;QACtC,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ;QACvC,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC9B,WAAW,CAAC,OAAO,CAAC,MAAM,IAAI,qBAAqB,CACpD,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CACjB,MAA2C;IAE3C,MAAM,IAAI,GAAG,MAAM,EAAE,KAAK,CAAA;IAC1B,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACtE,CAAC,CAAE,IAAgC;QACnC,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED;0FAC0F;AAC1F,MAAM,UAAU,eAAe,CAAC,MAA2C;IACzE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAA;IAC3D,OAAO,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1D,CAAC;AAED,SAAS,eAAe,CAAC,MAA2C;IAClE,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,CAAA;IAC/C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvF,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA2C;IACrE,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAA;IAC7B,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QACpD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC;QAC3C,CAAC,CAAC,SAAS,CAAA;AACf,CAAC;AAED,SAAS,eAAe,CAAC,MAA+B,EAAE,KAAsB;IAC9E,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACzC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC1B,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,KAAK,GAAG,GAAS,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACvD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,YAAY,CAAC,MAAmB;IACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC5B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,cAAc,MAAM,EAAE,CAAA;IAClF,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAA;IAC3E,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAA;IAC3C,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,CAAA;AACjD,CAAC;AAED,yGAAyG;AACzG,MAAM,oBAAoB,GAAG,SAAS,CAAA;AAEtC;;8DAE8D;AAC9D,SAAS,YAAY,CACnB,KAA8B,EAC9B,UAA6C,EAC7C,SAAkB;IAElB,MAAM,YAAY,GAChB,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACpF,CAAC,CAAE,KAAK,CAAC,KAAiC;QAC1C,CAAC,CAAC,SAAS,CAAA;IACf,OAAO;QACL,GAAG,KAAK;QACR,UAAU,EAAE,UAAU;QACtB,KAAK,EAAE,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE;QAClE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAA;AACH,CAAC;AAED;;wGAEwG;AACxG,SAAS,cAAc,CAAC,MAA8B,EAAE,IAAa;IACnE,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;IACpF,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QACpD,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;QACpD,CAAC,CAAC,SAAS,CAAA;IACf,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;QAC7B,GAAG,CAAC,MAAM,CAAC,iBAAiB,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE;YACjD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAuB,EACvB,KAAyB,EACzB,UAA6C,EAC7C,WAA8B,EAAE,EAChC,UAA8B,EAAE;IAEhC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;IAChF,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IACtC,MAAM,cAAc,GAAG,EAAE,KAAK,SAAS,CAAA;IACvC,MAAM,GAAG,GAAG,EAAE,IAAI,IAAI,CAAA;IACtB,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAA;IAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,sBAAsB,EAAE,CAAA;IAEvD,yGAAyG;IACzG,wGAAwG;IACxG,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,gBAAgB,KAAK,SAAS,CAAA;IAC/C,IAAI,QAAQ,IAAI,gBAAgB,KAAK,uBAAuB,EAAE,CAAC;QAC7D,OAAO,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC,mBAAmB,EAAE,8BAA8B,EAAE;YAClF,SAAS,EAAE,CAAC,uBAAuB,CAAC;YACpC,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAA;IACJ,CAAC;IACD,wGAAwG;IACxG,+FAA+F;IAC/F,MAAM,KAAK,GAAG,CAAC,KAA8B,EAAE,SAAS,GAAG,KAAK,EAAmB,EAAE,CACnF,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;IAE/E,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,kGAAkG;YAClG,mFAAmF;YACnF,MAAM,SAAS,GAAG,MAAM,EAAE,eAAe,CAAA;YACzC,MAAM,eAAe,GACnB,OAAO,SAAS,KAAK,QAAQ,IAAI,2BAA2B,CAAC,GAAG,CAAC,SAAS,CAAC;gBACzE,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,gBAAgB,CAAA;YACtB,OAAO,SAAS,CAAC,GAAG,EAAE;gBACpB,eAAe;gBACf,YAAY,EAAE;oBACZ,KAAK,EAAE,EAAE;oBACT,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClD,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9C,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,SAAS;wBAC3B,CAAC,CAAC;4BACE,UAAU,EAAE;gCACV,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE;6BACtE;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;iBACR;gBACD,UAAU;gBACV,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxF,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,iBAAiB;YACpB,8FAA8F;YAC9F,qDAAqD;YACrD,OAAO,SAAS,CACd,GAAG,EACH,YAAY,CACV;gBACE,iBAAiB,EAAE,CAAC,uBAAuB,CAAC;gBAC5C,YAAY,EAAE;oBACZ,KAAK,EAAE,EAAE;oBACT,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClD,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC9C,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,SAAS;wBAC3B,CAAC,CAAC;4BACE,UAAU,EAAE;gCACV,CAAC,gBAAgB,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,EAAE;6BACtE;yBACF;wBACH,CAAC,CAAC,EAAE,CAAC;iBACR;gBACD,GAAG,CAAC,QAAQ,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACxF,EACD,UAAU,EACV,IAAI,CACL,CACF,CAAA;QACH,KAAK,2BAA2B;YAC9B,OAAO,IAAI,CAAA;QACb,KAAK,yBAAyB,CAAC,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;YACzC,IAAI,GAAG,KAAK,SAAS;gBAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAA;YACvF,OAAO,IAAI,CAAA;QACb,CAAC;QACD,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC3B,KAAK,YAAY;YACf,OAAO,KAAK,CACV,MAAM,EAAE,OAAO,KAAK,IAAI;gBACtB,CAAC,CAAC;oBACE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACvB,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC;qBAC/C,CAAC,CAAC;iBACJ;gBACH,CAAC,CAAC;oBACE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBACvB,IAAI,EAAE,CAAC,CAAC,IAAI;wBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACtE,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACrD,CAAC,CAAC;iBACJ,EACL,IAAI,CACL,CAAA;QACH,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAA;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;YAC/C,IAAI,CAAC,IAAI;gBAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACxE,OAAO,KAAK,CAAC;gBACX,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5E,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC3D;aACF,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAA;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;YAC/C,IAAI,CAAC,IAAI;gBAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,iBAAiB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACxE,MAAM,iBAAiB,GAAG,MAAM,EAAE,SAAS,CAAA;YAC3C,IAAI,iBAAiB,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBAC/D,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAA;YAClE,MAAM,IAAI,GAAG,iBAAiB,IAAI,EAAE,CAAA;YACpC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;YACxC,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;YAC1B,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAA;YAC7E,CAAC;YACD,MAAM,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;YAChE,IAAI,GAAG,KAAK,SAAS;gBAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;YAChE,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;YAC7C,IAAI,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAA;YAC3C,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,KAAc,EAAQ,EAAE;gBAChE,IACE,aAAa,KAAK,SAAS;oBAC3B,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC1B,QAAQ,IAAI,YAAY;oBACxB,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAChD,CAAC;oBACD,OAAM;gBACR,CAAC;gBACD,YAAY,GAAG,QAAQ,CAAA;gBACvB,OAAO,CAAC,gBAAgB,EAAE,CAAC;oBACzB,OAAO,EAAE,KAAK;oBACd,MAAM,EAAE,wBAAwB;oBAChC,MAAM,EAAE;wBACN,aAAa;wBACb,QAAQ;wBACR,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC1C;iBACF,CAAC,CAAA;YACJ,CAAC,CAAA;YACD,IAAI,CAAC;gBACH,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACpB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;gBAChF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;oBACtC,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,SAAS,EAAE,GAAG;oBACd,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzD,cAAc;iBACf,CAAC,CAAA;gBACF,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,MAAM,IAAI,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;gBAChF,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACpB,OAAO,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;YAC5C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC9B,OAAO,KAAK,CAAC;wBACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;wBAClE,OAAO,EAAE,IAAI;qBACd,CAAC,CAAA;gBACJ,CAAC;gBACD,yFAAyF;gBACzF,6FAA6F;gBAC7F,MAAM,MAAM,GACV,OAAO,CAAC,gBAAgB,KAAK,IAAI,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE;oBACjF,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,EAAE;oBACrD,CAAC,CAAC,EAAE,CAAA;gBACR,OAAO,KAAK,CAAC;oBACX,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,MAAM,EAAE,EAAE,CAAC;oBACnE,OAAO,EAAE,IAAI;iBACd,CAAC,CAAA;YACJ,CAAC;oBAAS,CAAC;gBACT,YAAY,EAAE,CAAA;gBACd,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC;oBACtE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,gBAAgB;YACnB,OAAO,KAAK,CACV;gBACE,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/B,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtE,GAAG,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7D,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrD,CAAC,CAAC;aACJ,EACD,IAAI,CACL,CAAA;QACH,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,CAAA;YACvB,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;YACrD,IAAI,CAAC,QAAQ;gBAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,qBAAqB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC/E,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBACrC,OAAO,KAAK,CACV;oBACE,QAAQ,EAAE;wBACR;4BACE,GAAG,EAAE,QAAQ,CAAC,GAAG;4BACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,IAAI,YAAY;4BAC/D,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBACnE;qBACF;iBACF,EACD,IAAI,CACL,CAAA;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,8FAA8F;gBAC9F,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,4BAA4B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACzE,CAAC;QACH,CAAC;QACD,KAAK,cAAc;YACjB,OAAO,KAAK,CACV;gBACE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACjE,CAAC,CAAC;aACJ,EACD,IAAI,CACL,CAAA;QACH,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAA;YACzB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;YACnD,IAAI,CAAC,MAAM;gBAAE,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,mBAAmB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC5E,MAAM,iBAAiB,GAAG,MAAM,EAAE,SAAS,CAAA;YAC3C,IAAI,iBAAiB,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;gBAC/D,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAA;YACpE,MAAM,IAAI,GAAG,iBAAiB,IAAI,EAAE,CAAA;YACpC,IAAI,CAAC;gBACH,OAAO,KAAK,CAAC;oBACX,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,QAAQ,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;iBACrC,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,8FAA8F;gBAC9F,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAA;YACzD,CAAC;QACH,CAAC;QACD;YACE,IAAI,cAAc;gBAAE,OAAO,IAAI,CAAA;YAC/B,OAAO,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,qBAAqB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACvE,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AAE7D,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;8CAC0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,kGAAkG;IAClG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAwCD;+GAC+G;AAC/G,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,CAa9E"}
1
+ {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,aAAa,CAAA;AAE7D,MAAM,WAAW,kBAAkB;IACjC,mEAAmE;IACnE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;8CAC0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,kGAAkG;IAClG,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAwCD;+GAC+G;AAC/G,wBAAsB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,CAe9E"}
package/dist/react.js CHANGED
@@ -65,7 +65,9 @@ export async function reactWidget(opts) {
65
65
  ...(opts.description !== undefined ? { description: opts.description } : {}),
66
66
  ...(opts.title !== undefined ? { title: opts.title } : {}),
67
67
  ...(opts.head !== undefined ? { head: opts.head } : {}),
68
- html: `<div id="root"></div>\n<script>${safe}</script>`,
68
+ // `safe` is a Bun-generated JavaScript bundle with every HTML script end-tag escaped before it is
69
+ // placed in this inline script. The widget test asserts the generated document remains intact.
70
+ html: `<div id="root"></div>\n<script>${safe}</script>`, // nosemgrep: javascript.lang.security.audit.unknown-value-with-script-tag.unknown-value-with-script-tag
69
71
  });
70
72
  }
71
73
  //# sourceMappingURL=react.js.map
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../src/react.ts"],"names":[],"mappings":"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"}
package/dist/server.d.ts CHANGED
@@ -15,12 +15,13 @@
15
15
  * {@link McpServer.handle} dispatches a single JSON-RPC message directly (for headless verification / tests).
16
16
  *
17
17
  * SECURITY: this has NO built-in authentication - once mounted, every tool is callable by anyone who can
18
- * reach the route (the CORS header is `*` and no credentials are used, so it is effectively public). That
19
- * is fine for read-only/public tools; if any tool mutates state or returns private data, gate the route
20
- * yourself (check an `Authorization` header / session in the nifra handler before calling `mcp.fetch`).
18
+ * reach the route. Browser access is same-origin by default; set `allowAnyOrigin: true` only for a
19
+ * secret-free public server. Same-origin does not stop DNS rebinding: a server on localhost or a
20
+ * private network should also set `allowedHosts`. If any tool mutates state or returns private data, gate the route yourself
21
+ * (check an `Authorization` header / session in the nifra handler before calling `mcp.fetch`).
21
22
  */
22
23
  import { type McpHttpOptions } from "./http.js";
23
- import { type JsonRpcRequest, type JsonRpcResponse, type McpPrompt, type McpResource, type McpServerFeatures, type McpTool } from "./protocol.js";
24
+ import { type JsonRpcRequest, type JsonRpcResponse, type McpPrompt, type McpProtocolState, type McpResource, type McpServerFeatures, type McpTool } from "./protocol.js";
24
25
  import type { McpWidget } from "./widget.js";
25
26
  export interface CreateMcpServerOptions {
26
27
  readonly name: string;
@@ -35,11 +36,20 @@ export interface CreateMcpServerOptions {
35
36
  readonly health?: string;
36
37
  /** Max JSON-RPC body size in bytes (default 1 MB). */
37
38
  readonly maxBodyBytes?: number;
39
+ /** Max serialized JSON-RPC response or SSE frame size (default 1 MB). */
40
+ readonly maxResponseBytes?: number;
38
41
  /** Natural-language guidance for LLMs, surfaced in the modern `server/discover` result (2026-07-28). */
39
42
  readonly instructions?: string;
40
- /** Origin allowlist for the DNS-rebinding guard. Omit to allow any origin; set it to reject other
41
- * browser origins with 403 (e.g. a hardened, non-public mount). */
43
+ /** Explicitly allow browser clients from any origin. Omit for the secure same-origin default. */
44
+ readonly allowAnyOrigin?: boolean;
45
+ /** Origin allowlist for the DNS-rebinding guard. Set it to permit exact cross-origin clients. */
42
46
  readonly allowedOrigins?: readonly string[];
47
+ /** Host allowlist; set it for a server on localhost or a private network. See {@link McpHttpOptions}. */
48
+ readonly allowedHosts?: readonly string[];
49
+ /** Shared state for one authenticated MCP session; prefer `resolveState` for multi-session hosts. */
50
+ readonly state?: McpProtocolState;
51
+ /** Resolve a session-scoped request registry after per-message authorization. */
52
+ readonly resolveState?: McpHttpOptions["resolveState"];
43
53
  /**
44
54
  * Per-message authorization, applied after the message parses and before any tool runs. Return
45
55
  * `false` to answer 403 with a JSON-RPC `unauthorized` error (`MCP_ERROR.UNAUTHORIZED`) and no result.
@@ -59,7 +69,7 @@ export interface McpServer {
59
69
  version: string;
60
70
  };
61
71
  /** Web `fetch` handler - mount at `POST /mcp` (GET is a health page, OPTIONS the CORS preflight). */
62
- fetch(request: Request, overrides?: Pick<McpHttpOptions, "authorizeMessage">): Promise<Response>;
72
+ fetch(request: Request, overrides?: Pick<McpHttpOptions, "authorizeMessage" | "state" | "resolveState">): Promise<Response>;
63
73
  /** Dispatch one JSON-RPC message directly (no HTTP) - for headless verification and unit tests. */
64
74
  handle(message: JsonRpcRequest): Promise<JsonRpcResponse | null>;
65
75
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,WAAW,CAAA;AAC/D,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EAEb,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;IACnC,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;IACvC,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;IACvC,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,sDAAsD;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,wGAAwG;IACxG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B;uEACmE;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C;;;;;;;;OAQG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAC1B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,OAAO,KACb,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACtD,qGAAqG;IACrG,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,kBAAkB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChG,mGAAmG;IACnG,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAA;IAChE;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS,CA8BvE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,WAAW,CAAA;AAC/D,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,OAAO,EAEb,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;IACnC,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;IACvC,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;IACvC,4BAA4B;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,sDAAsD;IACtD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,yEAAyE;IACzE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,wGAAwG;IACxG,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,iGAAiG;IACjG,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAA;IACjC,iGAAiG;IACjG,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3C,yGAAyG;IACzG,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,qGAAqG;IACrG,QAAQ,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAA;IACjC,iFAAiF;IACjF,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC,CAAA;IACtD;;;;;;;;OAQG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAC1B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,OAAO,KACb,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;IACtD,qGAAqG;IACrG,KAAK,CACH,OAAO,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,kBAAkB,GAAG,OAAO,GAAG,cAAc,CAAC,GAC9E,OAAO,CAAC,QAAQ,CAAC,CAAA;IACpB,mGAAmG;IACnG,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAA;IAChE;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,sBAAsB,GAAG,SAAS,CAwCvE"}
package/dist/server.js CHANGED
@@ -15,9 +15,10 @@
15
15
  * {@link McpServer.handle} dispatches a single JSON-RPC message directly (for headless verification / tests).
16
16
  *
17
17
  * SECURITY: this has NO built-in authentication - once mounted, every tool is callable by anyone who can
18
- * reach the route (the CORS header is `*` and no credentials are used, so it is effectively public). That
19
- * is fine for read-only/public tools; if any tool mutates state or returns private data, gate the route
20
- * yourself (check an `Authorization` header / session in the nifra handler before calling `mcp.fetch`).
18
+ * reach the route. Browser access is same-origin by default; set `allowAnyOrigin: true` only for a
19
+ * secret-free public server. Same-origin does not stop DNS rebinding: a server on localhost or a
20
+ * private network should also set `allowedHosts`. If any tool mutates state or returns private data, gate the route yourself
21
+ * (check an `Authorization` header / session in the nifra handler before calling `mcp.fetch`).
21
22
  */
22
23
  import { respondMcpHttp } from "./http.js";
23
24
  import { handleRpc, UI_MIME, } from "./protocol.js";
@@ -42,13 +43,22 @@ export function createMcpServer(opts) {
42
43
  features,
43
44
  ...(opts.health !== undefined ? { health: opts.health } : {}),
44
45
  ...(opts.maxBodyBytes !== undefined ? { maxBodyBytes: opts.maxBodyBytes } : {}),
46
+ ...(opts.maxResponseBytes !== undefined ? { maxResponseBytes: opts.maxResponseBytes } : {}),
47
+ ...(opts.allowAnyOrigin === true ? { allowAnyOrigin: true } : {}),
45
48
  ...(opts.allowedOrigins !== undefined ? { allowedOrigins: opts.allowedOrigins } : {}),
49
+ ...(opts.allowedHosts !== undefined ? { allowedHosts: opts.allowedHosts } : {}),
50
+ ...(opts.state === undefined ? {} : { state: opts.state }),
51
+ ...(opts.resolveState === undefined ? {} : { resolveState: opts.resolveState }),
46
52
  ...(opts.authorizeMessage !== undefined ? { authorizeMessage: opts.authorizeMessage } : {}),
47
53
  ...(overrides?.authorizeMessage !== undefined
48
54
  ? { authorizeMessage: overrides.authorizeMessage }
49
55
  : {}),
56
+ ...(overrides?.state === undefined ? {} : { state: overrides.state }),
57
+ ...(overrides?.resolveState === undefined ? {} : { resolveState: overrides.resolveState }),
58
+ }),
59
+ handle: (message) => handleRpc(message, tools, serverInfo, features, {
60
+ ...(opts.state === undefined ? {} : { state: opts.state }),
50
61
  }),
51
- handle: (message) => handleRpc(message, tools, serverInfo, features),
52
62
  };
53
63
  }
54
64
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAuB,cAAc,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,EACL,SAAS,EAOT,OAAO,GACR,MAAM,eAAe,CAAA;AAmDtB,MAAM,UAAU,eAAe,CAAC,IAA4B;IAC1D,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAA;IAClC,sGAAsG;IACtG,gDAAgD;IAChD,MAAM,SAAS,GAAkB,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAA;IAC/F,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;IAC7D,MAAM,QAAQ,GAAsB;QAClC,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAA;IACD,OAAO;QACL,KAAK;QACL,QAAQ;QACR,UAAU;QACV,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAC5B,cAAc,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE;YACzC,QAAQ;YACR,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrF,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,SAAS,EAAE,gBAAgB,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,EAAE;gBAClD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACJ,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC;KACrE,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nifrajs/mcp",
3
- "version": "3.3.0",
3
+ "version": "4.0.0",
4
4
  "description": "Build MCP servers - and MCP Apps (interactive `ui://` widgets, SEP-1865) - for a nifra app. The transport-agnostic JSON-RPC core (also used by `@nifrajs/cli`'s dev MCP), a Streamable-HTTP handler you mount at `POST /mcp`, and `defineMcpWidget`/`defineMcpTool` for tool results that render real UI in MCP hosts.",
5
5
  "keywords": [
6
6
  "bun",
@@ -16,6 +16,9 @@
16
16
  "widgets"
17
17
  ],
18
18
  "type": "module",
19
+ "nifra": {
20
+ "environment": "library"
21
+ },
19
22
  "main": "./dist/index.js",
20
23
  "module": "./dist/index.js",
21
24
  "types": "./dist/index.d.ts",
@@ -63,9 +66,12 @@
63
66
  "publishConfig": {
64
67
  "access": "public"
65
68
  },
69
+ "dependencies": {
70
+ "@nifrajs/agent-protocol": "4.0.0"
71
+ },
66
72
  "peerDependencies": {
67
- "@nifrajs/agent": "^3.3.0",
68
- "@nifrajs/core": "^3.3.0"
73
+ "@nifrajs/agent": "^4.0.0",
74
+ "@nifrajs/core": "^4.0.0"
69
75
  },
70
76
  "peerDependenciesMeta": {
71
77
  "@nifrajs/agent": {
package/src/bridge.ts CHANGED
@@ -35,6 +35,8 @@ export interface McpAppBridge {
35
35
  onTheme(cb: (theme: unknown) => void): void
36
36
  /** Invoke a tool back through the host; resolves with the tools/call result. */
37
37
  callTool(name: string, args?: Record<string, unknown>): Promise<unknown>
38
+ /** Reject pending calls when the embedding host tears down the widget. */
39
+ disconnect(reason?: string): void
38
40
  }
39
41
 
40
42
  /** The bridge source, as a string for inlining in a `<script>`. Self-contained, no imports. */
@@ -46,11 +48,44 @@ export function bridgeScript(): string {
46
48
  // global or strip it, and so it has zero dependency on this module's runtime. Intentionally ES5-ish for
47
49
  // maximal host/iframe compatibility.
48
50
  const BRIDGE_SOURCE = `(function () {
49
- var pending = {};
51
+ var pending = Object.create(null);
50
52
  var nextId = 1;
53
+ var maxPending = 64;
54
+ var maxCallbacks = 128;
55
+ var maxNameLength = 128;
56
+ var maxArgsChars = 65536;
57
+ var maxReasonLength = 512;
58
+ var callTimeoutMs = 30000;
59
+ var disconnected = false;
51
60
  var dataCbs = [];
52
61
  var inputCbs = [];
53
62
  var themeCbs = [];
63
+ function boundedReason(reason) {
64
+ return typeof reason === "string" && reason.length > 0
65
+ ? reason.slice(0, maxReasonLength)
66
+ : "mcp host disconnected";
67
+ }
68
+ function boundedArgs(args) {
69
+ if (args == null) return {};
70
+ if (typeof args !== "object" || Array.isArray(args)) return null;
71
+ try {
72
+ var encoded = JSON.stringify(args);
73
+ if (typeof encoded !== "string" || encoded.length > maxArgsChars) return null;
74
+ return JSON.parse(encoded);
75
+ } catch (e) {
76
+ return null;
77
+ }
78
+ }
79
+ function disconnect(reason) {
80
+ disconnected = true;
81
+ var message = boundedReason(reason);
82
+ for (var id in pending) {
83
+ if (!Object.prototype.hasOwnProperty.call(pending, id)) continue;
84
+ var item = pending[id]; delete pending[id];
85
+ if (item.timer) clearTimeout(item.timer);
86
+ try { item.reject(new Error(message)); } catch (e) {}
87
+ }
88
+ }
54
89
  function applyTheme(theme) {
55
90
  if (!theme || typeof theme !== "object") return;
56
91
  var root = document.documentElement;
@@ -72,22 +107,42 @@ const BRIDGE_SOURCE = `(function () {
72
107
  theme: null,
73
108
  onData: function (cb) {
74
109
  if (typeof cb !== "function") return;
110
+ if (dataCbs.length >= maxCallbacks) return;
75
111
  dataCbs.push(cb);
76
112
  if (api.data !== null) { try { cb(api.data); } catch (e) {} }
77
113
  },
78
- onInput: function (cb) { if (typeof cb === "function") inputCbs.push(cb); },
114
+ onInput: function (cb) {
115
+ if (typeof cb !== "function" || inputCbs.length >= maxCallbacks) return;
116
+ inputCbs.push(cb);
117
+ },
79
118
  onTheme: function (cb) {
80
119
  if (typeof cb !== "function") return;
120
+ if (themeCbs.length >= maxCallbacks) return;
81
121
  themeCbs.push(cb);
82
122
  if (api.theme !== null) { try { cb(api.theme); } catch (e) {} }
83
123
  },
84
124
  callTool: function (name, args) {
125
+ if (disconnected) return Promise.reject(new Error("mcp host disconnected"));
126
+ if (typeof name !== "string" || name.length === 0 || name.length > maxNameLength)
127
+ return Promise.reject(new Error("mcp host tool name is invalid"));
128
+ var safeArgs = boundedArgs(args);
129
+ if (safeArgs === null) return Promise.reject(new Error("mcp host tool arguments are invalid"));
130
+ var count = 0;
131
+ for (var key in pending) if (Object.prototype.hasOwnProperty.call(pending, key)) count++;
132
+ if (count >= maxPending) return Promise.reject(new Error("mcp host call limit reached"));
85
133
  var id = "w" + nextId++;
86
134
  return new Promise(function (resolve, reject) {
87
- pending[id] = { resolve: resolve, reject: reject };
88
- post({ jsonrpc: "2.0", id: id, method: "tools/call", params: { name: name, arguments: args || {} } });
135
+ var timer = setTimeout(function () {
136
+ var item = pending[id];
137
+ if (!item) return;
138
+ delete pending[id];
139
+ try { item.reject(new Error("mcp host call timed out")); } catch (e) {}
140
+ }, callTimeoutMs);
141
+ pending[id] = { resolve: resolve, reject: reject, timer: timer };
142
+ post({ jsonrpc: "2.0", id: id, method: "tools/call", params: { name: name, arguments: safeArgs } });
89
143
  });
90
- }
144
+ },
145
+ disconnect: function (reason) { disconnect(reason); }
91
146
  };
92
147
  function post(msg) { try { (window.parent || window).postMessage(msg, "*"); } catch (e) {} }
93
148
  function emit(list, value) { for (var i = 0; i < list.length; i++) { try { list[i](value); } catch (e) {} } }
@@ -102,6 +157,7 @@ const BRIDGE_SOURCE = `(function () {
102
157
  // A response to one of our tools/call requests (id-matched).
103
158
  if (msg.id != null && pending[msg.id]) {
104
159
  var p = pending[msg.id]; delete pending[msg.id];
160
+ if (p.timer) clearTimeout(p.timer);
105
161
  if (msg.error) p.reject(msg.error); else p.resolve(msg.result);
106
162
  return;
107
163
  }
@@ -118,6 +174,8 @@ const BRIDGE_SOURCE = `(function () {
118
174
  api.theme = theme;
119
175
  applyTheme(theme);
120
176
  emit(themeCbs, theme);
177
+ } else if (msg.method === "ui/notifications/disconnected") {
178
+ disconnect((msg.params || {}).reason);
121
179
  }
122
180
  });
123
181
  window.mcpApp = api;