@intlayer/mcp 6.1.6 → 7.0.0-canary.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 (45) hide show
  1. package/dist/cjs/_virtual/rolldown_runtime.cjs +25 -0
  2. package/dist/cjs/client/client.cjs +22 -42
  3. package/dist/cjs/client/client.cjs.map +1 -1
  4. package/dist/cjs/client/sse.cjs +59 -57
  5. package/dist/cjs/client/sse.cjs.map +1 -1
  6. package/dist/cjs/server/server.cjs +29 -53
  7. package/dist/cjs/server/server.cjs.map +1 -1
  8. package/dist/cjs/server/sse.cjs +92 -104
  9. package/dist/cjs/server/sse.cjs.map +1 -1
  10. package/dist/cjs/server/stdio.cjs +14 -9
  11. package/dist/cjs/server/stdio.cjs.map +1 -1
  12. package/dist/cjs/tools/cli.cjs +203 -268
  13. package/dist/cjs/tools/cli.cjs.map +1 -1
  14. package/dist/cjs/tools/docs.cjs +34 -145
  15. package/dist/cjs/tools/docs.cjs.map +1 -1
  16. package/dist/esm/client/client.mjs +12 -13
  17. package/dist/esm/client/client.mjs.map +1 -1
  18. package/dist/esm/client/sse.mjs +55 -55
  19. package/dist/esm/client/sse.mjs.map +1 -1
  20. package/dist/esm/server/server.mjs +20 -25
  21. package/dist/esm/server/server.mjs.map +1 -1
  22. package/dist/esm/server/sse.mjs +81 -74
  23. package/dist/esm/server/sse.mjs.map +1 -1
  24. package/dist/esm/server/stdio.mjs +10 -6
  25. package/dist/esm/server/stdio.mjs.map +1 -1
  26. package/dist/esm/tools/cli.mjs +199 -240
  27. package/dist/esm/tools/cli.mjs.map +1 -1
  28. package/dist/esm/tools/docs.mjs +31 -111
  29. package/dist/esm/tools/docs.mjs.map +1 -1
  30. package/dist/types/client/client.d.ts +8 -25
  31. package/dist/types/client/client.d.ts.map +1 -1
  32. package/dist/types/client/sse.d.ts +1 -2
  33. package/dist/types/server/server.d.ts +8 -3
  34. package/dist/types/server/server.d.ts.map +1 -1
  35. package/dist/types/server/sse.d.ts +1 -3
  36. package/dist/types/server/stdio.d.ts +1 -3
  37. package/dist/types/tools/cli.d.ts +7 -2
  38. package/dist/types/tools/cli.d.ts.map +1 -1
  39. package/dist/types/tools/docs.d.ts +7 -2
  40. package/dist/types/tools/docs.d.ts.map +1 -1
  41. package/package.json +47 -53
  42. package/LICENSE +0 -202
  43. package/dist/types/client/sse.d.ts.map +0 -1
  44. package/dist/types/server/sse.d.ts.map +0 -1
  45. package/dist/types/server/stdio.d.ts.map +0 -1
@@ -0,0 +1,25 @@
1
+ //#region rolldown:runtime
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+
23
+ //#endregion
24
+
25
+ exports.__toESM = __toESM;
@@ -1,44 +1,24 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var client_exports = {};
20
- __export(client_exports, {
21
- dirname: () => dirname,
22
- loadClient: () => loadClient
23
- });
24
- module.exports = __toCommonJS(client_exports);
25
- var import_config = require("@intlayer/config");
26
- var import_client = require("@modelcontextprotocol/sdk/client/index.js");
27
- var import_fs = require("fs");
28
- var import_path = require("path");
29
- var import_url = require("url");
30
- const import_meta = {};
31
- const dirname = import_config.isESModule ? (0, import_path.dirname)((0, import_url.fileURLToPath)(import_meta.url)) : __dirname;
32
- const packageJson = JSON.parse(
33
- (0, import_fs.readFileSync)((0, import_path.resolve)(dirname, "../../../package.json"), "utf8")
34
- );
35
- const loadClient = () => new import_client.Client({
36
- name: `mcp-client-for-intlayer-mcp-server`,
37
- version: packageJson.version
38
- });
39
- // Annotate the CommonJS export names for ESM import in node:
40
- 0 && (module.exports = {
41
- dirname,
42
- loadClient
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ let node_fs = require("node:fs");
3
+ node_fs = require_rolldown_runtime.__toESM(node_fs);
4
+ let node_path = require("node:path");
5
+ node_path = require_rolldown_runtime.__toESM(node_path);
6
+ let node_url = require("node:url");
7
+ node_url = require_rolldown_runtime.__toESM(node_url);
8
+ let __intlayer_config = require("@intlayer/config");
9
+ __intlayer_config = require_rolldown_runtime.__toESM(__intlayer_config);
10
+ let __modelcontextprotocol_sdk_client_index_js = require("@modelcontextprotocol/sdk/client/index.js");
11
+ __modelcontextprotocol_sdk_client_index_js = require_rolldown_runtime.__toESM(__modelcontextprotocol_sdk_client_index_js);
12
+
13
+ //#region src/client/client.ts
14
+ const dirname = __intlayer_config.isESModule ? (0, node_path.dirname)((0, node_url.fileURLToPath)(require("url").pathToFileURL(__filename).href)) : __dirname;
15
+ const packageJson = JSON.parse((0, node_fs.readFileSync)((0, node_path.resolve)(dirname, "../../../package.json"), "utf8"));
16
+ const loadClient = () => new __modelcontextprotocol_sdk_client_index_js.Client({
17
+ name: `mcp-client-for-intlayer-mcp-server`,
18
+ version: packageJson.version
43
19
  });
20
+
21
+ //#endregion
22
+ exports.dirname = dirname;
23
+ exports.loadClient = loadClient;
44
24
  //# sourceMappingURL=client.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/client/client.ts"],"sourcesContent":["import { isESModule } from '@intlayer/config';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { readFileSync } from 'fs';\nimport { dirname as pathDirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\n\nexport const dirname = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson = JSON.parse(\n readFileSync(resolve(dirname, '../../../package.json'), 'utf8')\n);\n\nexport const loadClient = () =>\n new Client({\n name: `mcp-client-for-intlayer-mcp-server`,\n version: packageJson.version,\n });\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAC3B,oBAAuB;AACvB,gBAA6B;AAC7B,kBAAgD;AAChD,iBAA8B;AAJ9B;AAMO,MAAM,UAAU,+BACnB,YAAAA,aAAY,0BAAc,YAAY,GAAG,CAAC,IAC1C;AAEJ,MAAM,cAAc,KAAK;AAAA,MACvB,4BAAa,qBAAQ,SAAS,uBAAuB,GAAG,MAAM;AAChE;AAEO,MAAM,aAAa,MACxB,IAAI,qBAAO;AAAA,EACT,MAAM;AAAA,EACN,SAAS,YAAY;AACvB,CAAC;","names":["pathDirname"]}
1
+ {"version":3,"file":"client.cjs","names":["dirname: string","isESModule","packageJson: Record<string, any>","loadClient: LoadClient","Client"],"sources":["../../../src/client/client.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname as pathDirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { isESModule } from '@intlayer/config';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\n\nexport const dirname: string = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson: Record<string, any> = JSON.parse(\n readFileSync(resolve(dirname, '../../../package.json'), 'utf8')\n);\n\ntype LoadClient = () => Client;\n\nexport const loadClient: LoadClient = () =>\n new Client({\n name: `mcp-client-for-intlayer-mcp-server`,\n version: packageJson.version,\n });\n"],"mappings":";;;;;;;;;;;;;AAMA,MAAaA,UAAkBC,gIACe,CAAC,GAC3C;AAEJ,MAAMC,cAAmC,KAAK,uDACvB,SAAS,wBAAwB,EAAE,OAAO,CAChE;AAID,MAAaC,mBACX,IAAIC,kDAAO;CACT,MAAM;CACN,SAAS,YAAY;CACtB,CAAC"}
@@ -1,61 +1,63 @@
1
- "use strict";
2
- var import_sse = require("@modelcontextprotocol/sdk/client/sse.js");
3
- var import_url = require("url");
4
- var import_client2 = require('./client.cjs');
5
- class SSEClient {
6
- client;
7
- transport = null;
8
- isCompleted = false;
9
- constructor() {
10
- this.client = (0, import_client2.loadClient)();
11
- }
12
- async connectToServer() {
13
- const mcpServerURL = process.env.MCP_SERVER_URL ?? "https://mcp.intlayer.org";
14
- const url = new import_url.URL(mcpServerURL);
15
- try {
16
- console.info(`Connecting to server - ${mcpServerURL}`);
17
- this.transport = new import_sse.SSEClientTransport(url);
18
- await this.client.connect(this.transport);
19
- console.info("Connected to MCP server");
20
- this.setUpTransport();
21
- } catch (e) {
22
- console.info("Failed to connect to MCP server: ", e);
23
- throw e;
24
- }
25
- }
26
- setUpTransport() {
27
- if (this.transport === null) {
28
- return;
29
- }
30
- this.transport.onclose = () => {
31
- console.info("SSE transport closed.");
32
- this.isCompleted = true;
33
- };
34
- this.transport.onerror = async (error) => {
35
- console.info("SSE transport error: ", error);
36
- await this.cleanup();
37
- };
38
- this.transport.onmessage = (message) => {
39
- console.info("message received: ", message);
40
- };
41
- }
42
- async waitForCompletion() {
43
- while (!this.isCompleted) {
44
- await new Promise((resolve) => setTimeout(resolve, 100));
45
- }
46
- }
47
- async cleanup() {
48
- await this.client.close();
49
- }
50
- }
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_client_client = require('./client.cjs');
3
+ let node_url = require("node:url");
4
+ node_url = require_rolldown_runtime.__toESM(node_url);
5
+ let __modelcontextprotocol_sdk_client_sse_js = require("@modelcontextprotocol/sdk/client/sse.js");
6
+ __modelcontextprotocol_sdk_client_sse_js = require_rolldown_runtime.__toESM(__modelcontextprotocol_sdk_client_sse_js);
7
+
8
+ //#region src/client/sse.ts
9
+ var SSEClient = class {
10
+ client;
11
+ transport = null;
12
+ isCompleted = false;
13
+ constructor() {
14
+ this.client = require_client_client.loadClient();
15
+ }
16
+ async connectToServer() {
17
+ const mcpServerURL = process.env.MCP_SERVER_URL ?? "https://mcp.intlayer.org";
18
+ const url = new node_url.URL(mcpServerURL);
19
+ try {
20
+ console.info(`Connecting to server - ${mcpServerURL}`);
21
+ this.transport = new __modelcontextprotocol_sdk_client_sse_js.SSEClientTransport(url);
22
+ await this.client.connect(this.transport);
23
+ console.info("Connected to MCP server");
24
+ this.setUpTransport();
25
+ } catch (e) {
26
+ console.info("Failed to connect to MCP server: ", e);
27
+ throw e;
28
+ }
29
+ }
30
+ setUpTransport() {
31
+ if (this.transport === null) return;
32
+ this.transport.onclose = () => {
33
+ console.info("SSE transport closed.");
34
+ this.isCompleted = true;
35
+ };
36
+ this.transport.onerror = async (error) => {
37
+ console.info("SSE transport error: ", error);
38
+ await this.cleanup();
39
+ };
40
+ this.transport.onmessage = (message) => {
41
+ console.info("message received: ", message);
42
+ };
43
+ }
44
+ async waitForCompletion() {
45
+ while (!this.isCompleted) await new Promise((resolve) => setTimeout(resolve, 100));
46
+ }
47
+ async cleanup() {
48
+ await this.client.close();
49
+ }
50
+ };
51
51
  const main = async () => {
52
- const client = new SSEClient();
53
- try {
54
- await client.connectToServer();
55
- await client.waitForCompletion();
56
- } finally {
57
- await client.cleanup();
58
- }
52
+ const client = new SSEClient();
53
+ try {
54
+ await client.connectToServer();
55
+ await client.waitForCompletion();
56
+ } finally {
57
+ await client.cleanup();
58
+ }
59
59
  };
60
60
  main();
61
+
62
+ //#endregion
61
63
  //# sourceMappingURL=sse.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/client/sse.ts"],"sourcesContent":["import { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';\nimport { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { URL } from 'url';\nimport { loadClient } from './client';\n\nclass SSEClient {\n private client: Client;\n private transport: Transport | null = null;\n private isCompleted = false;\n\n constructor() {\n this.client = loadClient();\n }\n\n async connectToServer() {\n const mcpServerURL =\n process.env.MCP_SERVER_URL ?? 'https://mcp.intlayer.org';\n\n const url = new URL(mcpServerURL);\n try {\n console.info(`Connecting to server - ${mcpServerURL}`);\n this.transport = new SSEClientTransport(url);\n await this.client.connect(this.transport);\n console.info('Connected to MCP server');\n\n this.setUpTransport();\n } catch (e) {\n console.info('Failed to connect to MCP server: ', e);\n throw e;\n }\n }\n\n private setUpTransport() {\n if (this.transport === null) {\n return;\n }\n this.transport.onclose = () => {\n console.info('SSE transport closed.');\n this.isCompleted = true;\n };\n\n this.transport.onerror = async (error) => {\n console.info('SSE transport error: ', error);\n await this.cleanup();\n };\n\n this.transport.onmessage = (message) => {\n console.info('message received: ', message);\n };\n }\n\n async waitForCompletion() {\n while (!this.isCompleted) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n async cleanup() {\n await this.client.close();\n }\n}\n\nconst main = async () => {\n const client = new SSEClient();\n\n try {\n await client.connectToServer();\n await client.waitForCompletion();\n } finally {\n await client.cleanup();\n }\n};\n\nmain();\n"],"mappings":";AACA,iBAAmC;AAEnC,iBAAoB;AACpB,IAAAA,iBAA2B;AAE3B,MAAM,UAAU;AAAA,EACN;AAAA,EACA,YAA8B;AAAA,EAC9B,cAAc;AAAA,EAEtB,cAAc;AACZ,SAAK,aAAS,2BAAW;AAAA,EAC3B;AAAA,EAEA,MAAM,kBAAkB;AACtB,UAAM,eACJ,QAAQ,IAAI,kBAAkB;AAEhC,UAAM,MAAM,IAAI,eAAI,YAAY;AAChC,QAAI;AACF,cAAQ,KAAK,0BAA0B,YAAY,EAAE;AACrD,WAAK,YAAY,IAAI,8BAAmB,GAAG;AAC3C,YAAM,KAAK,OAAO,QAAQ,KAAK,SAAS;AACxC,cAAQ,KAAK,yBAAyB;AAEtC,WAAK,eAAe;AAAA,IACtB,SAAS,GAAG;AACV,cAAQ,KAAK,qCAAqC,CAAC;AACnD,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEQ,iBAAiB;AACvB,QAAI,KAAK,cAAc,MAAM;AAC3B;AAAA,IACF;AACA,SAAK,UAAU,UAAU,MAAM;AAC7B,cAAQ,KAAK,uBAAuB;AACpC,WAAK,cAAc;AAAA,IACrB;AAEA,SAAK,UAAU,UAAU,OAAO,UAAU;AACxC,cAAQ,KAAK,yBAAyB,KAAK;AAC3C,YAAM,KAAK,QAAQ;AAAA,IACrB;AAEA,SAAK,UAAU,YAAY,CAAC,YAAY;AACtC,cAAQ,KAAK,sBAAsB,OAAO;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,MAAM,oBAAoB;AACxB,WAAO,CAAC,KAAK,aAAa;AACxB,YAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG,CAAC;AAAA,IACzD;AAAA,EACF;AAAA,EAEA,MAAM,UAAU;AACd,UAAM,KAAK,OAAO,MAAM;AAAA,EAC1B;AACF;AAEA,MAAM,OAAO,YAAY;AACvB,QAAM,SAAS,IAAI,UAAU;AAE7B,MAAI;AACF,UAAM,OAAO,gBAAgB;AAC7B,UAAM,OAAO,kBAAkB;AAAA,EACjC,UAAE;AACA,UAAM,OAAO,QAAQ;AAAA,EACvB;AACF;AAEA,KAAK;","names":["import_client"]}
1
+ {"version":3,"file":"sse.cjs","names":["loadClient","URL","SSEClientTransport"],"sources":["../../../src/client/sse.ts"],"sourcesContent":["import { URL } from 'node:url';\nimport type { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';\nimport type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';\nimport { loadClient } from './client';\n\nclass SSEClient {\n private client: Client;\n private transport: Transport | null = null;\n private isCompleted = false;\n\n constructor() {\n this.client = loadClient();\n }\n\n async connectToServer() {\n const mcpServerURL =\n process.env.MCP_SERVER_URL ?? 'https://mcp.intlayer.org';\n\n const url = new URL(mcpServerURL);\n try {\n console.info(`Connecting to server - ${mcpServerURL}`);\n this.transport = new SSEClientTransport(url);\n await this.client.connect(this.transport);\n console.info('Connected to MCP server');\n\n this.setUpTransport();\n } catch (e) {\n console.info('Failed to connect to MCP server: ', e);\n throw e;\n }\n }\n\n private setUpTransport() {\n if (this.transport === null) {\n return;\n }\n this.transport.onclose = () => {\n console.info('SSE transport closed.');\n this.isCompleted = true;\n };\n\n this.transport.onerror = async (error) => {\n console.info('SSE transport error: ', error);\n await this.cleanup();\n };\n\n this.transport.onmessage = (message) => {\n console.info('message received: ', message);\n };\n }\n\n async waitForCompletion() {\n while (!this.isCompleted) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n }\n\n async cleanup() {\n await this.client.close();\n }\n}\n\nconst main = async () => {\n const client = new SSEClient();\n\n try {\n await client.connectToServer();\n await client.waitForCompletion();\n } finally {\n await client.cleanup();\n }\n};\n\nmain();\n"],"mappings":";;;;;;;;AAMA,IAAM,YAAN,MAAgB;CACd,AAAQ;CACR,AAAQ,YAA8B;CACtC,AAAQ,cAAc;CAEtB,cAAc;AACZ,OAAK,SAASA,kCAAY;;CAG5B,MAAM,kBAAkB;EACtB,MAAM,eACJ,QAAQ,IAAI,kBAAkB;EAEhC,MAAM,MAAM,IAAIC,aAAI,aAAa;AACjC,MAAI;AACF,WAAQ,KAAK,0BAA0B,eAAe;AACtD,QAAK,YAAY,IAAIC,4DAAmB,IAAI;AAC5C,SAAM,KAAK,OAAO,QAAQ,KAAK,UAAU;AACzC,WAAQ,KAAK,0BAA0B;AAEvC,QAAK,gBAAgB;WACd,GAAG;AACV,WAAQ,KAAK,qCAAqC,EAAE;AACpD,SAAM;;;CAIV,AAAQ,iBAAiB;AACvB,MAAI,KAAK,cAAc,KACrB;AAEF,OAAK,UAAU,gBAAgB;AAC7B,WAAQ,KAAK,wBAAwB;AACrC,QAAK,cAAc;;AAGrB,OAAK,UAAU,UAAU,OAAO,UAAU;AACxC,WAAQ,KAAK,yBAAyB,MAAM;AAC5C,SAAM,KAAK,SAAS;;AAGtB,OAAK,UAAU,aAAa,YAAY;AACtC,WAAQ,KAAK,sBAAsB,QAAQ;;;CAI/C,MAAM,oBAAoB;AACxB,SAAO,CAAC,KAAK,YACX,OAAM,IAAI,SAAS,YAAY,WAAW,SAAS,IAAI,CAAC;;CAI5D,MAAM,UAAU;AACd,QAAM,KAAK,OAAO,OAAO;;;AAI7B,MAAM,OAAO,YAAY;CACvB,MAAM,SAAS,IAAI,WAAW;AAE9B,KAAI;AACF,QAAM,OAAO,iBAAiB;AAC9B,QAAM,OAAO,mBAAmB;WACxB;AACR,QAAM,OAAO,SAAS;;;AAI1B,MAAM"}
@@ -1,56 +1,32 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var server_exports = {};
20
- __export(server_exports, {
21
- dirname: () => dirname,
22
- loadServer: () => loadServer
23
- });
24
- module.exports = __toCommonJS(server_exports);
25
- var import_config = require("@intlayer/config");
26
- var import_mcp = require("@modelcontextprotocol/sdk/server/mcp.js");
27
- var import_fs = require("fs");
28
- var import_path = require("path");
29
- var import_url = require("url");
30
- var import_cli = require('../tools/cli.cjs');
31
- var import_docs = require('../tools/docs.cjs');
32
- const import_meta = {};
33
- const dirname = import_config.isESModule ? (0, import_path.dirname)((0, import_url.fileURLToPath)(import_meta.url)) : __dirname;
34
- const packageJson = JSON.parse(
35
- (0, import_fs.readFileSync)((0, import_path.resolve)(dirname, "../../../package.json"), "utf8")
36
- );
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_tools_cli = require('../tools/cli.cjs');
3
+ const require_tools_docs = require('../tools/docs.cjs');
4
+ let node_fs = require("node:fs");
5
+ node_fs = require_rolldown_runtime.__toESM(node_fs);
6
+ let node_path = require("node:path");
7
+ node_path = require_rolldown_runtime.__toESM(node_path);
8
+ let node_url = require("node:url");
9
+ node_url = require_rolldown_runtime.__toESM(node_url);
10
+ let __intlayer_config = require("@intlayer/config");
11
+ __intlayer_config = require_rolldown_runtime.__toESM(__intlayer_config);
12
+ let __modelcontextprotocol_sdk_server_mcp_js = require("@modelcontextprotocol/sdk/server/mcp.js");
13
+ __modelcontextprotocol_sdk_server_mcp_js = require_rolldown_runtime.__toESM(__modelcontextprotocol_sdk_server_mcp_js);
14
+
15
+ //#region src/server/server.ts
16
+ const dirname = __intlayer_config.isESModule ? (0, node_path.dirname)((0, node_url.fileURLToPath)(require("url").pathToFileURL(__filename).href)) : __dirname;
17
+ const packageJson = JSON.parse((0, node_fs.readFileSync)((0, node_path.resolve)(dirname, "../../../package.json"), "utf8"));
37
18
  const loadServer = (isLocal) => {
38
- const server = new import_mcp.McpServer({
39
- name: "intlayer",
40
- version: packageJson.version,
41
- capabilities: {
42
- resources: {}
43
- }
44
- });
45
- if (!isLocal) {
46
- (0, import_cli.loadCLITools)(server);
47
- }
48
- (0, import_docs.loadDocsTools)(server);
49
- return server;
19
+ const server = new __modelcontextprotocol_sdk_server_mcp_js.McpServer({
20
+ name: "intlayer",
21
+ version: packageJson.version,
22
+ capabilities: { resources: {} }
23
+ });
24
+ if (!isLocal) require_tools_cli.loadCLITools(server);
25
+ require_tools_docs.loadDocsTools(server);
26
+ return server;
50
27
  };
51
- // Annotate the CommonJS export names for ESM import in node:
52
- 0 && (module.exports = {
53
- dirname,
54
- loadServer
55
- });
28
+
29
+ //#endregion
30
+ exports.dirname = dirname;
31
+ exports.loadServer = loadServer;
56
32
  //# sourceMappingURL=server.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/server.ts"],"sourcesContent":["import { isESModule } from '@intlayer/config';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { readFileSync } from 'fs';\nimport { dirname as pathDirname, resolve } from 'path';\nimport { fileURLToPath } from 'url';\nimport { loadCLITools } from '../tools/cli';\nimport { loadDocsTools } from '../tools/docs';\n\nexport const dirname = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson = JSON.parse(\n readFileSync(resolve(dirname, '../../../package.json'), 'utf8')\n);\n\nexport const loadServer = (isLocal: boolean): McpServer => {\n const server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n capabilities: {\n resources: {},\n },\n });\n\n if (!isLocal) {\n loadCLITools(server);\n }\n\n loadDocsTools(server);\n\n return server;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAC3B,iBAA0B;AAC1B,gBAA6B;AAC7B,kBAAgD;AAChD,iBAA8B;AAC9B,iBAA6B;AAC7B,kBAA8B;AAN9B;AAQO,MAAM,UAAU,+BACnB,YAAAA,aAAY,0BAAc,YAAY,GAAG,CAAC,IAC1C;AAEJ,MAAM,cAAc,KAAK;AAAA,MACvB,4BAAa,qBAAQ,SAAS,uBAAuB,GAAG,MAAM;AAChE;AAEO,MAAM,aAAa,CAAC,YAAgC;AACzD,QAAM,SAAS,IAAI,qBAAU;AAAA,IAC3B,MAAM;AAAA,IACN,SAAS,YAAY;AAAA,IACrB,cAAc;AAAA,MACZ,WAAW,CAAC;AAAA,IACd;AAAA,EACF,CAAC;AAED,MAAI,CAAC,SAAS;AACZ,iCAAa,MAAM;AAAA,EACrB;AAEA,iCAAc,MAAM;AAEpB,SAAO;AACT;","names":["pathDirname"]}
1
+ {"version":3,"file":"server.cjs","names":["dirname: string","isESModule","packageJson: Record<string, any>","loadServer: LoadServer","McpServer"],"sources":["../../../src/server/server.ts"],"sourcesContent":["import { readFileSync } from 'node:fs';\nimport { dirname as pathDirname, resolve } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { isESModule } from '@intlayer/config';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { loadCLITools } from '../tools/cli';\nimport { loadDocsTools } from '../tools/docs';\n\nexport const dirname: string = isESModule\n ? pathDirname(fileURLToPath(import.meta.url))\n : __dirname;\n\nconst packageJson: Record<string, any> = JSON.parse(\n readFileSync(resolve(dirname, '../../../package.json'), 'utf8')\n);\n\ntype LoadServer = (isLocal: boolean) => McpServer;\n\nexport const loadServer: LoadServer = (isLocal) => {\n const server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n capabilities: {\n resources: {},\n },\n });\n\n if (!isLocal) {\n loadCLITools(server);\n }\n\n loadDocsTools(server);\n\n return server;\n};\n"],"mappings":";;;;;;;;;;;;;;;AAQA,MAAaA,UAAkBC,gIACe,CAAC,GAC3C;AAEJ,MAAMC,cAAmC,KAAK,uDACvB,SAAS,wBAAwB,EAAE,OAAO,CAChE;AAID,MAAaC,cAA0B,YAAY;CACjD,MAAM,SAAS,IAAIC,mDAAU;EAC3B,MAAM;EACN,SAAS,YAAY;EACrB,cAAc,EACZ,WAAW,EAAE,EACd;EACF,CAAC;AAEF,KAAI,CAAC,QACH,gCAAa,OAAO;AAGtB,kCAAc,OAAO;AAErB,QAAO"}
@@ -1,123 +1,111 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- var __create = Object.create;
4
- var __defProp = Object.defineProperty;
5
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
- var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf;
8
- var __hasOwnProp = Object.prototype.hasOwnProperty;
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
18
- // If the importer is in node compatibility mode or this is not an ESM
19
- // file that has been converted to a CommonJS file using a Babel-
20
- // compatible transform (i.e. "__esModule" has not been set), then set
21
- // "default" to the CommonJS "module.exports" for node compatibility.
22
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
23
- mod
24
- ));
25
- var import_sse = require("@modelcontextprotocol/sdk/server/sse.js");
26
- var import_dotenv = __toESM(require("dotenv"));
27
- var import_express = __toESM(require("express"));
28
- var import_server = require('./server.cjs');
29
- const server = (0, import_server.loadServer)(false);
30
- const app = (0, import_express.default)();
2
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
3
+ const require_server_server = require('./server.cjs');
4
+ let __modelcontextprotocol_sdk_server_sse_js = require("@modelcontextprotocol/sdk/server/sse.js");
5
+ __modelcontextprotocol_sdk_server_sse_js = require_rolldown_runtime.__toESM(__modelcontextprotocol_sdk_server_sse_js);
6
+ let dotenv = require("dotenv");
7
+ dotenv = require_rolldown_runtime.__toESM(dotenv);
8
+ let express = require("express");
9
+ express = require_rolldown_runtime.__toESM(express);
10
+
11
+ //#region src/server/sse.ts
12
+ /******* Server Set Up *******/
13
+ const server = require_server_server.loadServer(false);
14
+ /******* Express App Set Up *******/
15
+ const app = (0, express.default)();
31
16
  const env = app.get("env");
32
- import_dotenv.default.config({
33
- path: [`.env.${env}.local`, `.env.${env}`, ".env.local", ".env"]
34
- });
17
+ dotenv.default.config({ path: [
18
+ `.env.${env}.local`,
19
+ `.env.${env}`,
20
+ ".env.local",
21
+ ".env"
22
+ ] });
35
23
  app.use((req, res, next) => {
36
- res.header("Access-Control-Allow-Origin", "*");
37
- res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
38
- res.header("Access-Control-Allow-Headers", "Content-Type");
39
- if (req.method === "OPTIONS") {
40
- res.sendStatus(200);
41
- return;
42
- }
43
- next();
24
+ res.header("Access-Control-Allow-Origin", "*");
25
+ res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
26
+ res.header("Access-Control-Allow-Headers", "Content-Type");
27
+ if (req.method === "OPTIONS") {
28
+ res.sendStatus(200);
29
+ return;
30
+ }
31
+ next();
44
32
  });
45
- app.use(import_express.default.json());
46
- const router = import_express.default.Router();
33
+ app.use(express.default.json());
34
+ const router = express.default.Router();
47
35
  const transports = {};
48
36
  const POST_ENDPOINT = "/messages";
49
37
  router.post(POST_ENDPOINT, async (req, res) => {
50
- console.info("message request received: ", req.body);
51
- const sessionId = req.query.sessionId;
52
- if (typeof sessionId != "string") {
53
- res.status(400).send({ messages: "Bad session id." });
54
- return;
55
- }
56
- const transport = transports[sessionId];
57
- if (!transport) {
58
- res.status(400).send({ messages: "No transport found for sessionId." });
59
- return;
60
- }
61
- await transport.handlePostMessage(req, res, req.body);
62
- return;
38
+ console.info("message request received: ", req.body);
39
+ const sessionId = req.query.sessionId;
40
+ if (typeof sessionId !== "string") {
41
+ res.status(400).send({ messages: "Bad session id." });
42
+ return;
43
+ }
44
+ const transport = transports[sessionId];
45
+ if (!transport) {
46
+ res.status(400).send({ messages: "No transport found for sessionId." });
47
+ return;
48
+ }
49
+ await transport.handlePostMessage(req, res, req.body);
63
50
  });
64
51
  router.get("/", async (_req, res) => {
65
- console.info("connection request received");
66
- const transport = new import_sse.SSEServerTransport(POST_ENDPOINT, res);
67
- console.info("new transport created with session id: ", transport.sessionId);
68
- transports[transport.sessionId] = transport;
69
- console.info(`${Object.keys(transports).length} sessions active`);
70
- res.on("close", () => {
71
- console.info("SSE connection closed");
72
- delete transports[transport.sessionId];
73
- });
74
- await server.connect(transport);
75
- await sendMessages(transport);
76
- return;
52
+ console.info("connection request received");
53
+ const transport = new __modelcontextprotocol_sdk_server_sse_js.SSEServerTransport(POST_ENDPOINT, res);
54
+ console.info("new transport created with session id: ", transport.sessionId);
55
+ transports[transport.sessionId] = transport;
56
+ console.info(`${Object.keys(transports).length} sessions active`);
57
+ res.on("close", () => {
58
+ console.info("SSE connection closed");
59
+ delete transports[transport.sessionId];
60
+ });
61
+ await server.connect(transport);
62
+ await sendMessages(transport);
77
63
  });
78
64
  const sendMessages = async (transport) => {
79
- try {
80
- await transport.send({
81
- jsonrpc: "2.0",
82
- method: "sse/connection",
83
- params: { message: "Stream started" }
84
- });
85
- console.info("Stream started");
86
- let messageCount = 0;
87
- const interval = setInterval(async () => {
88
- messageCount++;
89
- const message = `Message ${messageCount} at ${(/* @__PURE__ */ new Date()).toISOString()}`;
90
- try {
91
- await transport.send({
92
- jsonrpc: "2.0",
93
- method: "sse/message",
94
- params: { data: message }
95
- });
96
- console.info(`Sent: ${message}`);
97
- if (messageCount === 2) {
98
- clearInterval(interval);
99
- await transport.send({
100
- jsonrpc: "2.0",
101
- method: "sse/complete",
102
- params: { message: "Stream completed" }
103
- });
104
- console.info("Stream completed");
105
- }
106
- } catch (error) {
107
- console.error("Error sending message:", error);
108
- clearInterval(interval);
109
- }
110
- }, 1e3);
111
- } catch (error) {
112
- console.error("Error in startSending:", error);
113
- }
65
+ try {
66
+ await transport.send({
67
+ jsonrpc: "2.0",
68
+ method: "sse/connection",
69
+ params: { message: "Stream started" }
70
+ });
71
+ console.info("Stream started");
72
+ let messageCount = 0;
73
+ const interval = setInterval(async () => {
74
+ messageCount++;
75
+ const message = `Message ${messageCount} at ${(/* @__PURE__ */ new Date()).toISOString()}`;
76
+ try {
77
+ await transport.send({
78
+ jsonrpc: "2.0",
79
+ method: "sse/message",
80
+ params: { data: message }
81
+ });
82
+ console.info(`Sent: ${message}`);
83
+ if (messageCount === 2) {
84
+ clearInterval(interval);
85
+ await transport.send({
86
+ jsonrpc: "2.0",
87
+ method: "sse/complete",
88
+ params: { message: "Stream completed" }
89
+ });
90
+ console.info("Stream completed");
91
+ }
92
+ } catch (error) {
93
+ console.error("Error sending message:", error);
94
+ clearInterval(interval);
95
+ }
96
+ }, 1e3);
97
+ } catch (error) {
98
+ console.error("Error in startSending:", error);
99
+ }
114
100
  };
115
101
  app.use("/", router);
116
102
  app.use("/health", (_req, res) => {
117
- res.send("OK");
103
+ res.send("OK");
118
104
  });
119
105
  const PORT = process.env.PORT ?? 3e3;
120
106
  app.listen(PORT, () => {
121
- console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);
107
+ console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);
122
108
  });
109
+
110
+ //#endregion
123
111
  //# sourceMappingURL=sse.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer } from './server';\n\n/*******************************/\n/******* Server Set Up *******/\n/*******************************/\n\nconst server = loadServer(false);\n\n/*******************************/\n/******* Express App Set Up *******/\n/*******************************/\n\nconst app = express();\n\n// Environment variables\nconst env = app.get('env');\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n});\n\n// Enable CORS for development\napp.use((req, res, next) => {\n res.header('Access-Control-Allow-Origin', '*');\n res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');\n res.header('Access-Control-Allow-Headers', 'Content-Type');\n\n if (req.method === 'OPTIONS') {\n res.sendStatus(200);\n return;\n }\n\n next();\n});\n\napp.use(express.json());\nconst router = express.Router();\n\n// to support multiple simultaneous connections we have a lookup object from\n// sessionId to transport\nconst transports: { [sessionId: string]: SSEServerTransport } = {};\n\n// endpoint for the client to use for sending messages\nconst POST_ENDPOINT = '/messages';\n\nrouter.post(POST_ENDPOINT, async (req: Request, res: Response) => {\n console.info('message request received: ', req.body);\n // when client sends messages with `SSEClientTransport`,\n // the sessionId will be atomically set as query parameter.\n const sessionId = req.query.sessionId;\n\n if (typeof sessionId != 'string') {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n const transport = transports[sessionId];\n if (!transport) {\n res.status(400).send({ messages: 'No transport found for sessionId.' });\n return;\n }\n\n // IMPORTANT!\n // using `await transport.handlePostMessage(req, res)` will cause\n // `SSE transport error: Error: Error POSTing to endpoint (HTTP 400): InternalServerError: stream is not readable`\n // on the client side\n await transport.handlePostMessage(req, res, req.body);\n\n return;\n});\n\n// initialization:\n// create a new transport to connect and\n// send an endpoint event containing a URI for the client to use for sending messages\nrouter.get('/', async (_req: Request, res: Response) => {\n console.info('connection request received');\n // tells the client to send messages to the `POST_ENDPOINT`\n const transport = new SSEServerTransport(POST_ENDPOINT, res);\n console.info('new transport created with session id: ', transport.sessionId);\n\n transports[transport.sessionId] = transport;\n\n console.info(`${Object.keys(transports).length} sessions active`);\n\n res.on('close', () => {\n console.info('SSE connection closed');\n delete transports[transport.sessionId];\n });\n\n await server.connect(transport);\n\n // an exmaple of a server-sent-event (message) to client\n await sendMessages(transport);\n\n return;\n});\n\nconst sendMessages = async (transport: SSEServerTransport) => {\n try {\n // some messages will proabaly not be able to observed on the client side\n // becasue an open SSE Stream is not yet established\n // by receving the `initialize` POST request and the `notifications/initialized` POST request\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/connection',\n params: { message: 'Stream started' },\n });\n console.info('Stream started');\n\n let messageCount = 0;\n const interval = setInterval(async () => {\n messageCount++;\n\n const message = `Message ${messageCount} at ${new Date().toISOString()}`;\n\n try {\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/message',\n params: { data: message },\n });\n\n console.info(`Sent: ${message}`);\n\n if (messageCount === 2) {\n clearInterval(interval);\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/complete',\n params: { message: 'Stream completed' },\n });\n console.info('Stream completed');\n }\n } catch (error) {\n console.error('Error sending message:', error);\n clearInterval(interval);\n }\n }, 1000);\n } catch (error) {\n console.error('Error in startSending:', error);\n }\n};\n\napp.use('/', router);\n\napp.use('/health', (_req: Request, res: Response) => {\n res.send('OK');\n});\n\nconst PORT = process.env.PORT ?? 3000;\n\napp.listen(PORT, () => {\n console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);\n});\n"],"mappings":"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","names":["express","dotenv"]}
1
+ {"version":3,"file":"sse.cjs","names":["loadServer","transports: { [sessionId: string]: SSEServerTransport }","SSEServerTransport"],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer } from './server';\n\n/*******************************/\n/******* Server Set Up *******/\n/*******************************/\n\nconst server = loadServer(false);\n\n/*******************************/\n/******* Express App Set Up *******/\n/*******************************/\n\nconst app = express();\n\n// Environment variables\nconst env = app.get('env');\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n});\n\n// Enable CORS for development\napp.use((req, res, next) => {\n res.header('Access-Control-Allow-Origin', '*');\n res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');\n res.header('Access-Control-Allow-Headers', 'Content-Type');\n\n if (req.method === 'OPTIONS') {\n res.sendStatus(200);\n return;\n }\n\n next();\n});\n\napp.use(express.json());\nconst router = express.Router();\n\n// to support multiple simultaneous connections we have a lookup object from\n// sessionId to transport\nconst transports: { [sessionId: string]: SSEServerTransport } = {};\n\n// endpoint for the client to use for sending messages\nconst POST_ENDPOINT = '/messages';\n\nrouter.post(POST_ENDPOINT, async (req: Request, res: Response) => {\n console.info('message request received: ', req.body);\n // when client sends messages with `SSEClientTransport`,\n // the sessionId will be atomically set as query parameter.\n const sessionId = req.query.sessionId;\n\n if (typeof sessionId !== 'string') {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n const transport = transports[sessionId];\n if (!transport) {\n res.status(400).send({ messages: 'No transport found for sessionId.' });\n return;\n }\n\n // IMPORTANT!\n // using `await transport.handlePostMessage(req, res)` will cause\n // `SSE transport error: Error: Error POSTing to endpoint (HTTP 400): InternalServerError: stream is not readable`\n // on the client side\n await transport.handlePostMessage(req, res, req.body);\n\n return;\n});\n\n// initialization:\n// create a new transport to connect and\n// send an endpoint event containing a URI for the client to use for sending messages\nrouter.get('/', async (_req: Request, res: Response) => {\n console.info('connection request received');\n // tells the client to send messages to the `POST_ENDPOINT`\n const transport = new SSEServerTransport(POST_ENDPOINT, res);\n console.info('new transport created with session id: ', transport.sessionId);\n\n transports[transport.sessionId] = transport;\n\n console.info(`${Object.keys(transports).length} sessions active`);\n\n res.on('close', () => {\n console.info('SSE connection closed');\n delete transports[transport.sessionId];\n });\n\n await server.connect(transport);\n\n // an exmaple of a server-sent-event (message) to client\n await sendMessages(transport);\n\n return;\n});\n\nconst sendMessages = async (transport: SSEServerTransport) => {\n try {\n // some messages will proabaly not be able to observed on the client side\n // becasue an open SSE Stream is not yet established\n // by receving the `initialize` POST request and the `notifications/initialized` POST request\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/connection',\n params: { message: 'Stream started' },\n });\n console.info('Stream started');\n\n let messageCount = 0;\n const interval = setInterval(async () => {\n messageCount++;\n\n const message = `Message ${messageCount} at ${new Date().toISOString()}`;\n\n try {\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/message',\n params: { data: message },\n });\n\n console.info(`Sent: ${message}`);\n\n if (messageCount === 2) {\n clearInterval(interval);\n await transport.send({\n jsonrpc: '2.0',\n method: 'sse/complete',\n params: { message: 'Stream completed' },\n });\n console.info('Stream completed');\n }\n } catch (error) {\n console.error('Error sending message:', error);\n clearInterval(interval);\n }\n }, 1000);\n } catch (error) {\n console.error('Error in startSending:', error);\n }\n};\n\napp.use('/', router);\n\napp.use('/health', (_req: Request, res: Response) => {\n res.send('OK');\n});\n\nconst PORT = process.env.PORT ?? 3000;\n\napp.listen(PORT, () => {\n console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);\n});\n"],"mappings":";;;;;;;;;;;;AAWA,MAAM,SAASA,iCAAW,MAAM;;AAMhC,MAAM,4BAAe;AAGrB,MAAM,MAAM,IAAI,IAAI,MAAM;AAE1B,eAAO,OAAO,EACZ,MAAM;CAAC,QAAQ,IAAI;CAAS,QAAQ;CAAO;CAAc;CAAO,EACjE,CAAC;AAGF,IAAI,KAAK,KAAK,KAAK,SAAS;AAC1B,KAAI,OAAO,+BAA+B,IAAI;AAC9C,KAAI,OAAO,gCAAgC,qBAAqB;AAChE,KAAI,OAAO,gCAAgC,eAAe;AAE1D,KAAI,IAAI,WAAW,WAAW;AAC5B,MAAI,WAAW,IAAI;AACnB;;AAGF,OAAM;EACN;AAEF,IAAI,IAAI,gBAAQ,MAAM,CAAC;AACvB,MAAM,SAAS,gBAAQ,QAAQ;AAI/B,MAAMC,aAA0D,EAAE;AAGlE,MAAM,gBAAgB;AAEtB,OAAO,KAAK,eAAe,OAAO,KAAc,QAAkB;AAChE,SAAQ,KAAK,8BAA8B,IAAI,KAAK;CAGpD,MAAM,YAAY,IAAI,MAAM;AAE5B,KAAI,OAAO,cAAc,UAAU;AACjC,MAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;AACrD;;CAEF,MAAM,YAAY,WAAW;AAC7B,KAAI,CAAC,WAAW;AACd,MAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,qCAAqC,CAAC;AACvE;;AAOF,OAAM,UAAU,kBAAkB,KAAK,KAAK,IAAI,KAAK;EAGrD;AAKF,OAAO,IAAI,KAAK,OAAO,MAAe,QAAkB;AACtD,SAAQ,KAAK,8BAA8B;CAE3C,MAAM,YAAY,IAAIC,4DAAmB,eAAe,IAAI;AAC5D,SAAQ,KAAK,2CAA2C,UAAU,UAAU;AAE5E,YAAW,UAAU,aAAa;AAElC,SAAQ,KAAK,GAAG,OAAO,KAAK,WAAW,CAAC,OAAO,kBAAkB;AAEjE,KAAI,GAAG,eAAe;AACpB,UAAQ,KAAK,wBAAwB;AACrC,SAAO,WAAW,UAAU;GAC5B;AAEF,OAAM,OAAO,QAAQ,UAAU;AAG/B,OAAM,aAAa,UAAU;EAG7B;AAEF,MAAM,eAAe,OAAO,cAAkC;AAC5D,KAAI;AAIF,QAAM,UAAU,KAAK;GACnB,SAAS;GACT,QAAQ;GACR,QAAQ,EAAE,SAAS,kBAAkB;GACtC,CAAC;AACF,UAAQ,KAAK,iBAAiB;EAE9B,IAAI,eAAe;EACnB,MAAM,WAAW,YAAY,YAAY;AACvC;GAEA,MAAM,UAAU,WAAW,aAAa,uBAAM,IAAI,MAAM,EAAC,aAAa;AAEtE,OAAI;AACF,UAAM,UAAU,KAAK;KACnB,SAAS;KACT,QAAQ;KACR,QAAQ,EAAE,MAAM,SAAS;KAC1B,CAAC;AAEF,YAAQ,KAAK,SAAS,UAAU;AAEhC,QAAI,iBAAiB,GAAG;AACtB,mBAAc,SAAS;AACvB,WAAM,UAAU,KAAK;MACnB,SAAS;MACT,QAAQ;MACR,QAAQ,EAAE,SAAS,oBAAoB;MACxC,CAAC;AACF,aAAQ,KAAK,mBAAmB;;YAE3B,OAAO;AACd,YAAQ,MAAM,0BAA0B,MAAM;AAC9C,kBAAc,SAAS;;KAExB,IAAK;UACD,OAAO;AACd,UAAQ,MAAM,0BAA0B,MAAM;;;AAIlD,IAAI,IAAI,KAAK,OAAO;AAEpB,IAAI,IAAI,YAAY,MAAe,QAAkB;AACnD,KAAI,KAAK,KAAK;EACd;AAEF,MAAM,OAAO,QAAQ,IAAI,QAAQ;AAEjC,IAAI,OAAO,YAAY;AACrB,SAAQ,KAAK,gDAAgD,OAAO;EACpE"}