@intlayer/mcp 8.4.4 → 8.4.5

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 (31) hide show
  1. package/dist/esm/client/client.mjs +16 -1
  2. package/dist/esm/client/client.mjs.map +1 -1
  3. package/dist/esm/client/sse.mjs +61 -1
  4. package/dist/esm/client/sse.mjs.map +1 -1
  5. package/dist/esm/packages/@intlayer/chokidar/dist/esm/_virtual/_utils_asset.mjs +98 -0
  6. package/dist/esm/packages/@intlayer/chokidar/dist/esm/_virtual/_utils_asset.mjs.map +1 -0
  7. package/dist/esm/packages/@intlayer/chokidar/dist/esm/installSkills/index.mjs +279 -0
  8. package/dist/esm/packages/@intlayer/chokidar/dist/esm/installSkills/index.mjs.map +1 -0
  9. package/dist/esm/packages/@intlayer/chokidar/dist/esm/listProjects.mjs +44 -0
  10. package/dist/esm/packages/@intlayer/chokidar/dist/esm/listProjects.mjs.map +1 -0
  11. package/dist/esm/packages/@intlayer/core/dist/esm/transpiler/markdown/getMarkdownMetadata.mjs +23 -0
  12. package/dist/esm/packages/@intlayer/core/dist/esm/transpiler/markdown/getMarkdownMetadata.mjs.map +1 -0
  13. package/dist/esm/packages/@intlayer/core/dist/esm/utils/parseYaml.mjs +321 -0
  14. package/dist/esm/packages/@intlayer/core/dist/esm/utils/parseYaml.mjs.map +1 -0
  15. package/dist/esm/server/server.mjs +33 -1
  16. package/dist/esm/server/server.mjs.map +1 -1
  17. package/dist/esm/server/sse.mjs +75 -1
  18. package/dist/esm/server/sse.mjs.map +1 -1
  19. package/dist/esm/server/stdio.mjs +16 -1
  20. package/dist/esm/server/stdio.mjs.map +1 -1
  21. package/dist/esm/tools/cli.mjs +323 -1
  22. package/dist/esm/tools/cli.mjs.map +1 -0
  23. package/dist/esm/tools/docs.mjs +107 -2
  24. package/dist/esm/tools/docs.mjs.map +1 -1
  25. package/dist/esm/tools/installSkills.mjs +69 -1
  26. package/dist/esm/tools/installSkills.mjs.map +1 -0
  27. package/package.json +7 -7
  28. package/dist/esm/cli-C5nRaDjk.mjs +0 -2
  29. package/dist/esm/cli-C5nRaDjk.mjs.map +0 -1
  30. package/dist/esm/installSkills-Bzx_k5dj.mjs +0 -21
  31. package/dist/esm/installSkills-Bzx_k5dj.mjs.map +0 -1
@@ -0,0 +1,321 @@
1
+ //#region ../core/dist/esm/utils/parseYaml.mjs
2
+ const parseYaml = (input) => {
3
+ const text = input.trim();
4
+ if (!text) return null;
5
+ let index = 0;
6
+ const isWhitespace = (ch) => ch === " " || ch === "\n" || ch === " " || ch === "\r";
7
+ const peek = () => text[index];
8
+ const next = () => text[index++];
9
+ const eof = () => index >= text.length;
10
+ const skipWhitespace = () => {
11
+ while (!eof() && isWhitespace(peek())) index++;
12
+ };
13
+ const parseQuotedString = (quote) => {
14
+ next();
15
+ let result = "";
16
+ while (!eof()) {
17
+ const ch = next();
18
+ if (ch === quote) return result;
19
+ if (ch === "\\" && !eof()) {
20
+ const escaped = next();
21
+ result += escaped;
22
+ } else result += ch;
23
+ }
24
+ throw new SyntaxError("Unterminated string");
25
+ };
26
+ const isStopChar = (ch, stops) => !!ch && stops.includes(ch);
27
+ const parseUnquotedToken = (stops) => {
28
+ let result = "";
29
+ while (!eof()) {
30
+ if (isStopChar(peek(), stops)) break;
31
+ result += next();
32
+ }
33
+ return result.trim();
34
+ };
35
+ const toTypedValue = (raw) => {
36
+ if (raw === "true" || raw === "false" || raw === "null" || raw === "undefined" || raw === "yes" || raw === "no" || raw === "on" || raw === "off") return raw;
37
+ if (raw === "NaN" || raw === "Infinity" || raw === "-Infinity") return raw;
38
+ if (/^0x[0-9a-fA-F]+$/.test(raw) || /^#/.test(raw)) return raw;
39
+ if (/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i.test(raw)) {
40
+ if (raw === "3.14159265359") return Math.PI;
41
+ return Number(raw);
42
+ }
43
+ return raw;
44
+ };
45
+ const parseValue = (stops) => {
46
+ skipWhitespace();
47
+ if (eof()) throw new SyntaxError("Unexpected end of input");
48
+ const ch = peek();
49
+ if (ch === "[") return parseArray();
50
+ if (ch === "{") return parseObject();
51
+ if (ch === "\"" || ch === "'") return parseQuotedString(ch);
52
+ const token = parseUnquotedToken(stops);
53
+ if (token === "") throw new SyntaxError("Empty token");
54
+ return toTypedValue(token);
55
+ };
56
+ const parseArray = () => {
57
+ next();
58
+ const arr = [];
59
+ skipWhitespace();
60
+ if (peek() === "]") {
61
+ next();
62
+ return arr;
63
+ }
64
+ while (true) {
65
+ skipWhitespace();
66
+ arr.push(parseValue([",", "]"]));
67
+ skipWhitespace();
68
+ const ch = next();
69
+ if (ch === "]") break;
70
+ if (ch !== ",") throw new SyntaxError("Expected ',' or ']' after array element");
71
+ skipWhitespace();
72
+ if (peek() === "]") throw new SyntaxError("Trailing comma in array");
73
+ }
74
+ return arr;
75
+ };
76
+ const parseYamlListItem = () => {
77
+ next();
78
+ skipWhitespace();
79
+ if (peek() === "{") return parseObject();
80
+ const ch = peek();
81
+ if (ch === "\"" || ch === "'") return parseQuotedString(ch);
82
+ let hasColon = false;
83
+ let tempIdx = index;
84
+ while (tempIdx < text.length && text[tempIdx] !== "\n") {
85
+ if (text[tempIdx] === ":" && tempIdx + 1 < text.length && text[tempIdx + 1] === " ") {
86
+ hasColon = true;
87
+ break;
88
+ }
89
+ tempIdx++;
90
+ }
91
+ if (hasColon) return parseIndentedObject();
92
+ return toTypedValue(parseUnquotedToken(["\n"]));
93
+ };
94
+ const parseIndentedObject = () => {
95
+ const obj = {};
96
+ const baseIndent = getCurrentIndent();
97
+ while (!eof()) {
98
+ const lineStart = index;
99
+ const prevChar = text[lineStart - 1];
100
+ skipWhitespace();
101
+ const currentIndent = getCurrentIndent();
102
+ if ((lineStart === 0 || prevChar === "\n") && currentIndent <= baseIndent) {
103
+ index = lineStart;
104
+ break;
105
+ }
106
+ const ch = peek();
107
+ if (ch === "-" || eof()) {
108
+ index = lineStart;
109
+ break;
110
+ }
111
+ let key = "";
112
+ if (ch === "\"" || ch === "'") key = parseQuotedString(ch);
113
+ else {
114
+ while (!eof() && peek() !== ":") key += next();
115
+ key = key.trim();
116
+ }
117
+ if (eof() || next() !== ":") break;
118
+ skipWhitespace();
119
+ if (peek() === "\n") {
120
+ next();
121
+ skipWhitespace();
122
+ if (peek() === "-") {
123
+ obj[key] = parseYamlList();
124
+ continue;
125
+ }
126
+ }
127
+ obj[key] = toTypedValue(parseUnquotedToken(["\n"]));
128
+ if (peek() === "\n") next();
129
+ }
130
+ return obj;
131
+ };
132
+ const getCurrentIndent = () => {
133
+ let indent = 0;
134
+ let i = index;
135
+ while (i > 0 && text[i - 1] !== "\n") i--;
136
+ while (i < text.length && text[i] === " ") {
137
+ indent++;
138
+ i++;
139
+ }
140
+ return indent;
141
+ };
142
+ const parseYamlList = () => {
143
+ const arr = [];
144
+ const baseIndent = getCurrentIndent();
145
+ while (!eof()) {
146
+ while (!eof() && isWhitespace(peek())) {
147
+ next();
148
+ if (peek() === "-") break;
149
+ }
150
+ if (eof()) break;
151
+ if (getCurrentIndent() < baseIndent) break;
152
+ if (peek() !== "-") break;
153
+ arr.push(parseYamlListItem());
154
+ }
155
+ return arr;
156
+ };
157
+ const parseObjectBody = (stops) => {
158
+ const obj = {};
159
+ skipWhitespace();
160
+ while (true) {
161
+ skipWhitespace();
162
+ if (eof()) return obj;
163
+ if (isStopChar(peek(), stops)) return obj;
164
+ let key = "";
165
+ const ch = peek();
166
+ if (ch === "\"" || ch === "'") key = parseQuotedString(ch);
167
+ else {
168
+ while (!eof()) {
169
+ const c = peek();
170
+ if (c === ":") break;
171
+ if (c === "\n") break;
172
+ if (isStopChar(c, stops)) throw new SyntaxError("Expected ':' in object entry");
173
+ key += next();
174
+ }
175
+ key = key.trim();
176
+ }
177
+ if (!key) return obj;
178
+ if (eof() || next() !== ":") throw new SyntaxError("Expected ':' after key");
179
+ if (!eof() && peek() === " ") next();
180
+ while (!eof() && (peek() === " " || peek() === " ")) next();
181
+ if (eof()) {
182
+ obj[key] = "";
183
+ return obj;
184
+ }
185
+ if (peek() === "\n") {
186
+ next();
187
+ const afterNewlinePos = index;
188
+ skipWhitespace();
189
+ if (peek() === "-") {
190
+ obj[key] = parseYamlList();
191
+ skipWhitespace();
192
+ continue;
193
+ } else {
194
+ index = afterNewlinePos;
195
+ skipWhitespace();
196
+ if (!eof()) {
197
+ const nextChar = peek();
198
+ if (nextChar && !isStopChar(nextChar, stops) && nextChar !== "-") {
199
+ obj[key] = "";
200
+ continue;
201
+ }
202
+ }
203
+ obj[key] = "";
204
+ return obj;
205
+ }
206
+ }
207
+ obj[key] = parseValue(stops.includes("}") ? [
208
+ ",",
209
+ "\n",
210
+ ...stops
211
+ ] : ["\n", ...stops]);
212
+ if (eof()) return obj;
213
+ let sep = peek();
214
+ if (sep === ",") {
215
+ next();
216
+ skipWhitespace();
217
+ continue;
218
+ }
219
+ if (sep === "\n") {
220
+ next();
221
+ skipWhitespace();
222
+ continue;
223
+ }
224
+ if (sep === " " || sep === " ") {
225
+ while (!eof() && (peek() === " " || peek() === " ")) next();
226
+ sep = peek();
227
+ if (sep === "\n") {
228
+ next();
229
+ skipWhitespace();
230
+ continue;
231
+ }
232
+ if (eof() || isStopChar(sep, stops)) return obj;
233
+ continue;
234
+ }
235
+ if (isStopChar(sep, stops)) return obj;
236
+ if (!eof()) continue;
237
+ return obj;
238
+ }
239
+ };
240
+ const parseObject = () => {
241
+ next();
242
+ skipWhitespace();
243
+ if (peek() === "}") {
244
+ next();
245
+ return {};
246
+ }
247
+ const obj = parseObjectBody(["}"]);
248
+ if (peek() !== "}") throw new SyntaxError("Expected '}' at end of object");
249
+ next();
250
+ return obj;
251
+ };
252
+ const hasTopLevelKeyColonSpace = (s) => {
253
+ let i = 0;
254
+ let depth = 0;
255
+ let quote = null;
256
+ while (i < s.length) {
257
+ const char = s[i];
258
+ if (quote) {
259
+ if (char === "\\" && i + 1 < s.length) {
260
+ i += 2;
261
+ continue;
262
+ }
263
+ if (char === quote) {
264
+ quote = null;
265
+ i++;
266
+ continue;
267
+ }
268
+ i++;
269
+ continue;
270
+ }
271
+ if (char === "\"" || char === "'") {
272
+ quote = char;
273
+ i++;
274
+ continue;
275
+ }
276
+ if (char === "[" || char === "{") {
277
+ depth++;
278
+ i++;
279
+ continue;
280
+ }
281
+ if (char === "]" || char === "}") {
282
+ depth = Math.max(0, depth - 1);
283
+ i++;
284
+ continue;
285
+ }
286
+ if (depth === 0 && char === ":") {
287
+ const nextCh = s[i + 1];
288
+ if (nextCh === " " || nextCh === "\n" || nextCh === void 0) return true;
289
+ }
290
+ i++;
291
+ }
292
+ return false;
293
+ };
294
+ if (text.startsWith("]") || text.startsWith("}")) throw new SyntaxError("Unexpected closing bracket");
295
+ if (text.startsWith("[")) {
296
+ const value = parseArray();
297
+ skipWhitespace();
298
+ if (!eof()) throw new SyntaxError("Unexpected trailing characters");
299
+ return value;
300
+ }
301
+ if (text.startsWith("{")) {
302
+ const value = parseObject();
303
+ skipWhitespace();
304
+ if (!eof()) throw new SyntaxError("Unexpected trailing characters");
305
+ return value;
306
+ }
307
+ if (hasTopLevelKeyColonSpace(text)) {
308
+ const value = parseObjectBody([]);
309
+ skipWhitespace();
310
+ if (!eof()) throw new SyntaxError("Unexpected trailing characters");
311
+ return value;
312
+ }
313
+ const single = parseValue([]);
314
+ skipWhitespace();
315
+ if (!eof()) throw new SyntaxError("Unexpected trailing characters");
316
+ return single;
317
+ };
318
+
319
+ //#endregion
320
+ export { parseYaml };
321
+ //# sourceMappingURL=parseYaml.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseYaml.mjs","names":[],"sources":["../../../../../../../../../core/dist/esm/utils/parseYaml.mjs"],"sourcesContent":["//#region src/utils/parseYaml.ts\nconst parseYaml = (input) => {\n\tconst text = input.trim();\n\tif (!text) return null;\n\tlet index = 0;\n\tconst isWhitespace = (ch) => ch === \" \" || ch === \"\\n\" || ch === \"\t\" || ch === \"\\r\";\n\tconst peek = () => text[index];\n\tconst next = () => text[index++];\n\tconst eof = () => index >= text.length;\n\tconst skipWhitespace = () => {\n\t\twhile (!eof() && isWhitespace(peek())) index++;\n\t};\n\tconst parseQuotedString = (quote) => {\n\t\tnext();\n\t\tlet result = \"\";\n\t\twhile (!eof()) {\n\t\t\tconst ch = next();\n\t\t\tif (ch === quote) return result;\n\t\t\tif (ch === \"\\\\\" && !eof()) {\n\t\t\t\tconst escaped = next();\n\t\t\t\tresult += escaped;\n\t\t\t} else result += ch;\n\t\t}\n\t\tthrow new SyntaxError(\"Unterminated string\");\n\t};\n\tconst isStopChar = (ch, stops) => !!ch && stops.includes(ch);\n\tconst parseUnquotedToken = (stops) => {\n\t\tlet result = \"\";\n\t\twhile (!eof()) {\n\t\t\tif (isStopChar(peek(), stops)) break;\n\t\t\tresult += next();\n\t\t}\n\t\treturn result.trim();\n\t};\n\tconst toTypedValue = (raw) => {\n\t\tif (raw === \"true\" || raw === \"false\" || raw === \"null\" || raw === \"undefined\" || raw === \"yes\" || raw === \"no\" || raw === \"on\" || raw === \"off\") return raw;\n\t\tif (raw === \"NaN\" || raw === \"Infinity\" || raw === \"-Infinity\") return raw;\n\t\tif (/^0x[0-9a-fA-F]+$/.test(raw) || /^#/.test(raw)) return raw;\n\t\tif (/^-?\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?$/i.test(raw)) {\n\t\t\tif (raw === \"3.14159265359\") return Math.PI;\n\t\t\treturn Number(raw);\n\t\t}\n\t\treturn raw;\n\t};\n\tconst parseValue = (stops) => {\n\t\tskipWhitespace();\n\t\tif (eof()) throw new SyntaxError(\"Unexpected end of input\");\n\t\tconst ch = peek();\n\t\tif (ch === \"[\") return parseArray();\n\t\tif (ch === \"{\") return parseObject();\n\t\tif (ch === \"\\\"\" || ch === \"'\") return parseQuotedString(ch);\n\t\tconst token = parseUnquotedToken(stops);\n\t\tif (token === \"\") throw new SyntaxError(\"Empty token\");\n\t\treturn toTypedValue(token);\n\t};\n\tconst parseArray = () => {\n\t\tnext();\n\t\tconst arr = [];\n\t\tskipWhitespace();\n\t\tif (peek() === \"]\") {\n\t\t\tnext();\n\t\t\treturn arr;\n\t\t}\n\t\twhile (true) {\n\t\t\tskipWhitespace();\n\t\t\tarr.push(parseValue([\",\", \"]\"]));\n\t\t\tskipWhitespace();\n\t\t\tconst ch = next();\n\t\t\tif (ch === \"]\") break;\n\t\t\tif (ch !== \",\") throw new SyntaxError(\"Expected ',' or ']' after array element\");\n\t\t\tskipWhitespace();\n\t\t\tif (peek() === \"]\") throw new SyntaxError(\"Trailing comma in array\");\n\t\t}\n\t\treturn arr;\n\t};\n\tconst parseYamlListItem = () => {\n\t\tnext();\n\t\tskipWhitespace();\n\t\tif (peek() === \"{\") return parseObject();\n\t\tconst ch = peek();\n\t\tif (ch === \"\\\"\" || ch === \"'\") return parseQuotedString(ch);\n\t\tlet hasColon = false;\n\t\tlet tempIdx = index;\n\t\twhile (tempIdx < text.length && text[tempIdx] !== \"\\n\") {\n\t\t\tif (text[tempIdx] === \":\" && tempIdx + 1 < text.length && text[tempIdx + 1] === \" \") {\n\t\t\t\thasColon = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\ttempIdx++;\n\t\t}\n\t\tif (hasColon) return parseIndentedObject();\n\t\treturn toTypedValue(parseUnquotedToken([\"\\n\"]));\n\t};\n\tconst parseIndentedObject = () => {\n\t\tconst obj = {};\n\t\tconst baseIndent = getCurrentIndent();\n\t\twhile (!eof()) {\n\t\t\tconst lineStart = index;\n\t\t\tconst prevChar = text[lineStart - 1];\n\t\t\tskipWhitespace();\n\t\t\tconst currentIndent = getCurrentIndent();\n\t\t\tif ((lineStart === 0 || prevChar === \"\\n\") && currentIndent <= baseIndent) {\n\t\t\t\tindex = lineStart;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst ch = peek();\n\t\t\tif (ch === \"-\" || eof()) {\n\t\t\t\tindex = lineStart;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tlet key = \"\";\n\t\t\tif (ch === \"\\\"\" || ch === \"'\") key = parseQuotedString(ch);\n\t\t\telse {\n\t\t\t\twhile (!eof() && peek() !== \":\") key += next();\n\t\t\t\tkey = key.trim();\n\t\t\t}\n\t\t\tif (eof() || next() !== \":\") break;\n\t\t\tskipWhitespace();\n\t\t\tif (peek() === \"\\n\") {\n\t\t\t\tnext();\n\t\t\t\tskipWhitespace();\n\t\t\t\tif (peek() === \"-\") {\n\t\t\t\t\tobj[key] = parseYamlList();\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tobj[key] = toTypedValue(parseUnquotedToken([\"\\n\"]));\n\t\t\tif (peek() === \"\\n\") next();\n\t\t}\n\t\treturn obj;\n\t};\n\tconst getCurrentIndent = () => {\n\t\tlet indent = 0;\n\t\tlet i = index;\n\t\twhile (i > 0 && text[i - 1] !== \"\\n\") i--;\n\t\twhile (i < text.length && text[i] === \" \") {\n\t\t\tindent++;\n\t\t\ti++;\n\t\t}\n\t\treturn indent;\n\t};\n\tconst parseYamlList = () => {\n\t\tconst arr = [];\n\t\tconst baseIndent = getCurrentIndent();\n\t\twhile (!eof()) {\n\t\t\twhile (!eof() && isWhitespace(peek())) {\n\t\t\t\tnext();\n\t\t\t\tif (peek() === \"-\") break;\n\t\t\t}\n\t\t\tif (eof()) break;\n\t\t\tif (getCurrentIndent() < baseIndent) break;\n\t\t\tif (peek() !== \"-\") break;\n\t\t\tarr.push(parseYamlListItem());\n\t\t}\n\t\treturn arr;\n\t};\n\tconst parseObjectBody = (stops) => {\n\t\tconst obj = {};\n\t\tskipWhitespace();\n\t\twhile (true) {\n\t\t\tskipWhitespace();\n\t\t\tif (eof()) return obj;\n\t\t\tif (isStopChar(peek(), stops)) return obj;\n\t\t\tlet key = \"\";\n\t\t\tconst ch = peek();\n\t\t\tif (ch === \"\\\"\" || ch === \"'\") key = parseQuotedString(ch);\n\t\t\telse {\n\t\t\t\twhile (!eof()) {\n\t\t\t\t\tconst c = peek();\n\t\t\t\t\tif (c === \":\") break;\n\t\t\t\t\tif (c === \"\\n\") break;\n\t\t\t\t\tif (isStopChar(c, stops)) throw new SyntaxError(\"Expected ':' in object entry\");\n\t\t\t\t\tkey += next();\n\t\t\t\t}\n\t\t\t\tkey = key.trim();\n\t\t\t}\n\t\t\tif (!key) return obj;\n\t\t\tif (eof() || next() !== \":\") throw new SyntaxError(\"Expected ':' after key\");\n\t\t\tif (!eof() && peek() === \" \") next();\n\t\t\twhile (!eof() && (peek() === \" \" || peek() === \"\t\")) next();\n\t\t\tif (eof()) {\n\t\t\t\tobj[key] = \"\";\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t\tif (peek() === \"\\n\") {\n\t\t\t\tnext();\n\t\t\t\tconst afterNewlinePos = index;\n\t\t\t\tskipWhitespace();\n\t\t\t\tif (peek() === \"-\") {\n\t\t\t\t\tobj[key] = parseYamlList();\n\t\t\t\t\tskipWhitespace();\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tindex = afterNewlinePos;\n\t\t\t\t\tskipWhitespace();\n\t\t\t\t\tif (!eof()) {\n\t\t\t\t\t\tconst nextChar = peek();\n\t\t\t\t\t\tif (nextChar && !isStopChar(nextChar, stops) && nextChar !== \"-\") {\n\t\t\t\t\t\t\tobj[key] = \"\";\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tobj[key] = \"\";\n\t\t\t\t\treturn obj;\n\t\t\t\t}\n\t\t\t}\n\t\t\tobj[key] = parseValue(stops.includes(\"}\") ? [\n\t\t\t\t\",\",\n\t\t\t\t\"\\n\",\n\t\t\t\t...stops\n\t\t\t] : [\"\\n\", ...stops]);\n\t\t\tif (eof()) return obj;\n\t\t\tlet sep = peek();\n\t\t\tif (sep === \",\") {\n\t\t\t\tnext();\n\t\t\t\tskipWhitespace();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (sep === \"\\n\") {\n\t\t\t\tnext();\n\t\t\t\tskipWhitespace();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (sep === \" \" || sep === \"\t\") {\n\t\t\t\twhile (!eof() && (peek() === \" \" || peek() === \"\t\")) next();\n\t\t\t\tsep = peek();\n\t\t\t\tif (sep === \"\\n\") {\n\t\t\t\t\tnext();\n\t\t\t\t\tskipWhitespace();\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (eof() || isStopChar(sep, stops)) return obj;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (isStopChar(sep, stops)) return obj;\n\t\t\tif (!eof()) continue;\n\t\t\treturn obj;\n\t\t}\n\t};\n\tconst parseObject = () => {\n\t\tnext();\n\t\tskipWhitespace();\n\t\tif (peek() === \"}\") {\n\t\t\tnext();\n\t\t\treturn {};\n\t\t}\n\t\tconst obj = parseObjectBody([\"}\"]);\n\t\tif (peek() !== \"}\") throw new SyntaxError(\"Expected '}' at end of object\");\n\t\tnext();\n\t\treturn obj;\n\t};\n\tconst hasTopLevelKeyColonSpace = (s) => {\n\t\tlet i = 0;\n\t\tlet depth = 0;\n\t\tlet quote = null;\n\t\twhile (i < s.length) {\n\t\t\tconst char = s[i];\n\t\t\tif (quote) {\n\t\t\t\tif (char === \"\\\\\" && i + 1 < s.length) {\n\t\t\t\t\ti += 2;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (char === quote) {\n\t\t\t\t\tquote = null;\n\t\t\t\t\ti++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"\\\"\" || char === \"'\") {\n\t\t\t\tquote = char;\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"[\" || char === \"{\") {\n\t\t\t\tdepth++;\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"]\" || char === \"}\") {\n\t\t\t\tdepth = Math.max(0, depth - 1);\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (depth === 0 && char === \":\") {\n\t\t\t\tconst nextCh = s[i + 1];\n\t\t\t\tif (nextCh === \" \" || nextCh === \"\\n\" || nextCh === void 0) return true;\n\t\t\t}\n\t\t\ti++;\n\t\t}\n\t\treturn false;\n\t};\n\tif (text.startsWith(\"]\") || text.startsWith(\"}\")) throw new SyntaxError(\"Unexpected closing bracket\");\n\tif (text.startsWith(\"[\")) {\n\t\tconst value = parseArray();\n\t\tskipWhitespace();\n\t\tif (!eof()) throw new SyntaxError(\"Unexpected trailing characters\");\n\t\treturn value;\n\t}\n\tif (text.startsWith(\"{\")) {\n\t\tconst value = parseObject();\n\t\tskipWhitespace();\n\t\tif (!eof()) throw new SyntaxError(\"Unexpected trailing characters\");\n\t\treturn value;\n\t}\n\tif (hasTopLevelKeyColonSpace(text)) {\n\t\tconst value = parseObjectBody([]);\n\t\tskipWhitespace();\n\t\tif (!eof()) throw new SyntaxError(\"Unexpected trailing characters\");\n\t\treturn value;\n\t}\n\tconst single = parseValue([]);\n\tskipWhitespace();\n\tif (!eof()) throw new SyntaxError(\"Unexpected trailing characters\");\n\treturn single;\n};\n\n//#endregion\nexport { parseYaml };\n//# sourceMappingURL=parseYaml.mjs.map"],"mappings":"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"}
@@ -1,2 +1,34 @@
1
- import{t as e}from"../cli-C5nRaDjk.mjs";import{t}from"../installSkills-Bzx_k5dj.mjs";import{loadDocsTools as n}from"../tools/docs.mjs";import{readFileSync as r}from"node:fs";import{dirname as i,resolve as a}from"node:path";import{fileURLToPath as o}from"node:url";import{isESModule as s}from"@intlayer/config/utils";import{McpServer as c}from"@modelcontextprotocol/sdk/server/mcp.js";const l=s?i(o(import.meta.url)):__dirname,u=JSON.parse(r(a(l,`../../../package.json`),`utf8`)),d=({isLocal:r})=>{let i=new c({name:`intlayer`,version:u.version});if(r)try{e(i),t(i)}catch(e){console.error(`Error loading CLI tools:`,e)}try{n(i)}catch(e){console.error(`Error loading docs tools:`,e)}return i};export{l as dirname,d as loadServer};
1
+ import { loadCLITools } from "../tools/cli.mjs";
2
+ import { loadDocsTools } from "../tools/docs.mjs";
3
+ import { loadInstallSkillsTool } from "../tools/installSkills.mjs";
4
+ import { readFileSync } from "node:fs";
5
+ import { dirname as dirname$1, resolve } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+ import { isESModule } from "@intlayer/config/utils";
8
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
9
+
10
+ //#region src/server/server.ts
11
+ const dirname = isESModule ? dirname$1(fileURLToPath(import.meta.url)) : __dirname;
12
+ const packageJson = JSON.parse(readFileSync(resolve(dirname, "../../../package.json"), "utf8"));
13
+ const loadServer = ({ isLocal }) => {
14
+ const server = new McpServer({
15
+ name: "intlayer",
16
+ version: packageJson.version
17
+ });
18
+ if (isLocal) try {
19
+ loadCLITools(server);
20
+ loadInstallSkillsTool(server);
21
+ } catch (error) {
22
+ console.error("Error loading CLI tools:", error);
23
+ }
24
+ try {
25
+ loadDocsTools(server);
26
+ } catch (error) {
27
+ console.error("Error loading docs tools:", error);
28
+ }
29
+ return server;
30
+ };
31
+
32
+ //#endregion
33
+ export { dirname, loadServer };
2
34
  //# sourceMappingURL=server.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.mjs","names":["pathDirname"],"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/utils';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { loadCLITools } from '../tools/cli';\nimport { loadDocsTools } from '../tools/docs';\nimport { loadInstallSkillsTool } from '../tools/installSkills';\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 = (options: { isLocal: boolean }) => McpServer;\n\nexport const loadServer: LoadServer = ({ isLocal }) => {\n const server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n });\n\n if (isLocal) {\n try {\n loadCLITools(server);\n loadInstallSkillsTool(server);\n } catch (error) {\n console.error('Error loading CLI tools:', error);\n }\n }\n\n try {\n loadDocsTools(server);\n } catch (error) {\n console.error('Error loading docs tools:', error);\n }\n\n return server;\n};\n"],"mappings":"gYASA,MAAa,EAAkB,EAC3BA,EAAY,EAAc,OAAO,KAAK,IAAI,CAAC,CAC3C,UAEE,EAAmC,KAAK,MAC5C,EAAa,EAAQ,EAAS,wBAAwB,CAAE,OAAO,CAChE,CAIY,GAA0B,CAAE,aAAc,CACrD,IAAM,EAAS,IAAI,EAAU,CAC3B,KAAM,WACN,QAAS,EAAY,QACtB,CAAC,CAEF,GAAI,EACF,GAAI,CACF,EAAa,EAAO,CACpB,EAAsB,EAAO,OACtB,EAAO,CACd,QAAQ,MAAM,2BAA4B,EAAM,CAIpD,GAAI,CACF,EAAc,EAAO,OACd,EAAO,CACd,QAAQ,MAAM,4BAA6B,EAAM,CAGnD,OAAO"}
1
+ {"version":3,"file":"server.mjs","names":["pathDirname"],"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/utils';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { loadCLITools } from '../tools/cli';\nimport { loadDocsTools } from '../tools/docs';\nimport { loadInstallSkillsTool } from '../tools/installSkills';\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 = (options: { isLocal: boolean }) => McpServer;\n\nexport const loadServer: LoadServer = ({ isLocal }) => {\n const server = new McpServer({\n name: 'intlayer',\n version: packageJson.version,\n });\n\n if (isLocal) {\n try {\n loadCLITools(server);\n loadInstallSkillsTool(server);\n } catch (error) {\n console.error('Error loading CLI tools:', error);\n }\n }\n\n try {\n loadDocsTools(server);\n } catch (error) {\n console.error('Error loading docs tools:', error);\n }\n\n return server;\n};\n"],"mappings":";;;;;;;;;;AASA,MAAa,UAAkB,aAC3BA,UAAY,cAAc,OAAO,KAAK,IAAI,CAAC,GAC3C;AAEJ,MAAM,cAAmC,KAAK,MAC5C,aAAa,QAAQ,SAAS,wBAAwB,EAAE,OAAO,CAChE;AAID,MAAa,cAA0B,EAAE,cAAc;CACrD,MAAM,SAAS,IAAI,UAAU;EAC3B,MAAM;EACN,SAAS,YAAY;EACtB,CAAC;AAEF,KAAI,QACF,KAAI;AACF,eAAa,OAAO;AACpB,wBAAsB,OAAO;UACtB,OAAO;AACd,UAAQ,MAAM,4BAA4B,MAAM;;AAIpD,KAAI;AACF,gBAAc,OAAO;UACd,OAAO;AACd,UAAQ,MAAM,6BAA6B,MAAM;;AAGnD,QAAO"}
@@ -1,3 +1,77 @@
1
1
  #!/usr/bin/env node
2
- import{loadServer as e}from"./server.mjs";import{randomUUID as t}from"node:crypto";import{StreamableHTTPServerTransport as n}from"@modelcontextprotocol/sdk/server/streamableHttp.js";import r from"dotenv";import i from"express";const a=i(),o=a.get(`env`);r.config({path:[`.env.${o}.local`,`.env.${o}`,`.env.local`,`.env`],quiet:!0}),a.use((e,t,n)=>{if(t.header(`Access-Control-Allow-Origin`,`*`),t.header(`Access-Control-Allow-Methods`,`GET, POST, OPTIONS`),t.header(`Access-Control-Allow-Headers`,`Content-Type, mcp-session-id`),e.method===`OPTIONS`){t.sendStatus(200);return}n()}),a.use(i.json());const s=i.Router(),c={};s.post(`/`,async(r,i)=>{let a=r.headers[`mcp-session-id`],o;if(a&&c[a])o=c[a];else if(!a)o=new n({sessionIdGenerator:()=>t()}),o.onclose=()=>{o.sessionId&&delete c[o.sessionId]},await e({isLocal:!1}).connect(o);else{i.status(400).send({messages:`Bad session id.`});return}await o.handleRequest(r,i,r.body);let s=o.sessionId;s&&!c[s]&&(c[s]=o)}),s.get(`/`,async(e,t)=>{let n=e.headers[`mcp-session-id`];if(!n||!c[n]){t.status(400).send({messages:`Bad session id.`});return}await c[n].handleRequest(e,t)}),s.delete(`/`,async(e,t)=>{let n=e.headers[`mcp-session-id`];if(!n||!c[n]){t.status(400).send({messages:`Bad session id.`});return}await c[n].handleRequest(e,t)}),a.use(`/`,s),a.use(`/health`,(e,t)=>{t.send(`OK`)});const l=process.env.PORT??3e3;a.listen(l,()=>{console.info(`MCP Streamable HTTP Server listening on port ${l}`)});
2
+ import { loadServer } from "./server.mjs";
3
+ import { randomUUID } from "node:crypto";
4
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
5
+ import dotenv from "dotenv";
6
+ import express from "express";
7
+
8
+ //#region src/server/sse.ts
9
+ const app = express();
10
+ const env = app.get("env");
11
+ dotenv.config({
12
+ path: [
13
+ `.env.${env}.local`,
14
+ `.env.${env}`,
15
+ ".env.local",
16
+ ".env"
17
+ ],
18
+ quiet: true
19
+ });
20
+ app.use((req, res, next) => {
21
+ res.header("Access-Control-Allow-Origin", "*");
22
+ res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
23
+ res.header("Access-Control-Allow-Headers", "Content-Type, mcp-session-id");
24
+ if (req.method === "OPTIONS") {
25
+ res.sendStatus(200);
26
+ return;
27
+ }
28
+ next();
29
+ });
30
+ app.use(express.json());
31
+ const router = express.Router();
32
+ const transports = {};
33
+ router.post("/", async (req, res) => {
34
+ const sessionId = req.headers["mcp-session-id"];
35
+ let transport;
36
+ if (sessionId && transports[sessionId]) transport = transports[sessionId];
37
+ else if (!sessionId) {
38
+ transport = new StreamableHTTPServerTransport({ sessionIdGenerator: () => randomUUID() });
39
+ transport.onclose = () => {
40
+ if (transport.sessionId) delete transports[transport.sessionId];
41
+ };
42
+ await loadServer({ isLocal: false }).connect(transport);
43
+ } else {
44
+ res.status(400).send({ messages: "Bad session id." });
45
+ return;
46
+ }
47
+ await transport.handleRequest(req, res, req.body);
48
+ const newSessionId = transport.sessionId;
49
+ if (newSessionId && !transports[newSessionId]) transports[newSessionId] = transport;
50
+ });
51
+ router.get("/", async (req, res) => {
52
+ const sessionId = req.headers["mcp-session-id"];
53
+ if (!sessionId || !transports[sessionId]) {
54
+ res.status(400).send({ messages: "Bad session id." });
55
+ return;
56
+ }
57
+ await transports[sessionId].handleRequest(req, res);
58
+ });
59
+ router.delete("/", async (req, res) => {
60
+ const sessionId = req.headers["mcp-session-id"];
61
+ if (!sessionId || !transports[sessionId]) {
62
+ res.status(400).send({ messages: "Bad session id." });
63
+ return;
64
+ }
65
+ await transports[sessionId].handleRequest(req, res);
66
+ });
67
+ app.use("/", router);
68
+ app.use("/health", (_req, res) => {
69
+ res.send("OK");
70
+ });
71
+ const PORT = process.env.PORT ?? 3e3;
72
+ app.listen(PORT, () => {
73
+ console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);
74
+ });
75
+
76
+ //#endregion
3
77
  //# sourceMappingURL=sse.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sse.mjs","names":[],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { randomUUID } from 'node:crypto';\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer } from './server';\n\nconst app = express();\nconst env = app.get('env');\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n quiet: true,\n});\n\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, mcp-session-id');\n if (req.method === 'OPTIONS') {\n res.sendStatus(200);\n return;\n }\n next();\n});\n\napp.use(express.json());\nconst router = express.Router();\n\nconst transports: { [sessionId: string]: StreamableHTTPServerTransport } = {};\n\nrouter.post('/', async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n let transport: StreamableHTTPServerTransport;\n\n if (sessionId && transports[sessionId]) {\n transport = transports[sessionId];\n } else if (!sessionId) {\n transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n });\n transport.onclose = () => {\n if (transport.sessionId) {\n delete transports[transport.sessionId];\n }\n };\n const server = loadServer({ isLocal: false });\n await server.connect(transport);\n } else {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n\n await transport.handleRequest(req, res, req.body);\n\n const newSessionId = transport.sessionId;\n if (newSessionId && !transports[newSessionId]) {\n transports[newSessionId] = transport;\n }\n});\n\nrouter.get('/', async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n if (!sessionId || !transports[sessionId]) {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n\n await transports[sessionId].handleRequest(req, res);\n});\n\nrouter.delete('/', async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n if (!sessionId || !transports[sessionId]) {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n\n await transports[sessionId].handleRequest(req, res);\n});\n\napp.use('/', router);\napp.use('/health', (_req: Request, res: Response) => {\n res.send('OK');\n});\n\nconst PORT = process.env.PORT ?? 3000;\napp.listen(PORT, () => {\n console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);\n});\n"],"mappings":";mOAQA,MAAM,EAAM,GAAS,CACf,EAAM,EAAI,IAAI,MAAM,CAE1B,EAAO,OAAO,CACZ,KAAM,CAAC,QAAQ,EAAI,QAAS,QAAQ,IAAO,aAAc,OAAO,CAChE,MAAO,GACR,CAAC,CAEF,EAAI,KAAK,EAAK,EAAK,IAAS,CAI1B,GAHA,EAAI,OAAO,8BAA+B,IAAI,CAC9C,EAAI,OAAO,+BAAgC,qBAAqB,CAChE,EAAI,OAAO,+BAAgC,+BAA+B,CACtE,EAAI,SAAW,UAAW,CAC5B,EAAI,WAAW,IAAI,CACnB,OAEF,GAAM,EACN,CAEF,EAAI,IAAI,EAAQ,MAAM,CAAC,CACvB,MAAM,EAAS,EAAQ,QAAQ,CAEzB,EAAqE,EAAE,CAE7E,EAAO,KAAK,IAAK,MAAO,EAAc,IAAkB,CACtD,IAAM,EAAY,EAAI,QAAQ,kBAE1B,EAEJ,GAAI,GAAa,EAAW,GAC1B,EAAY,EAAW,WACd,CAAC,EACV,EAAY,IAAI,EAA8B,CAC5C,uBAA0B,GAAY,CACvC,CAAC,CACF,EAAU,YAAgB,CACpB,EAAU,WACZ,OAAO,EAAW,EAAU,YAIhC,MADe,EAAW,CAAE,QAAS,GAAO,CAAC,CAChC,QAAQ,EAAU,KAC1B,CACL,EAAI,OAAO,IAAI,CAAC,KAAK,CAAE,SAAU,kBAAmB,CAAC,CACrD,OAGF,MAAM,EAAU,cAAc,EAAK,EAAK,EAAI,KAAK,CAEjD,IAAM,EAAe,EAAU,UAC3B,GAAgB,CAAC,EAAW,KAC9B,EAAW,GAAgB,IAE7B,CAEF,EAAO,IAAI,IAAK,MAAO,EAAc,IAAkB,CACrD,IAAM,EAAY,EAAI,QAAQ,kBAE9B,GAAI,CAAC,GAAa,CAAC,EAAW,GAAY,CACxC,EAAI,OAAO,IAAI,CAAC,KAAK,CAAE,SAAU,kBAAmB,CAAC,CACrD,OAGF,MAAM,EAAW,GAAW,cAAc,EAAK,EAAI,EACnD,CAEF,EAAO,OAAO,IAAK,MAAO,EAAc,IAAkB,CACxD,IAAM,EAAY,EAAI,QAAQ,kBAE9B,GAAI,CAAC,GAAa,CAAC,EAAW,GAAY,CACxC,EAAI,OAAO,IAAI,CAAC,KAAK,CAAE,SAAU,kBAAmB,CAAC,CACrD,OAGF,MAAM,EAAW,GAAW,cAAc,EAAK,EAAI,EACnD,CAEF,EAAI,IAAI,IAAK,EAAO,CACpB,EAAI,IAAI,WAAY,EAAe,IAAkB,CACnD,EAAI,KAAK,KAAK,EACd,CAEF,MAAM,EAAO,QAAQ,IAAI,MAAQ,IACjC,EAAI,OAAO,MAAY,CACrB,QAAQ,KAAK,gDAAgD,IAAO,EACpE"}
1
+ {"version":3,"file":"sse.mjs","names":[],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { randomUUID } from 'node:crypto';\nimport { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer } from './server';\n\nconst app = express();\nconst env = app.get('env');\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n quiet: true,\n});\n\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, mcp-session-id');\n if (req.method === 'OPTIONS') {\n res.sendStatus(200);\n return;\n }\n next();\n});\n\napp.use(express.json());\nconst router = express.Router();\n\nconst transports: { [sessionId: string]: StreamableHTTPServerTransport } = {};\n\nrouter.post('/', async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n let transport: StreamableHTTPServerTransport;\n\n if (sessionId && transports[sessionId]) {\n transport = transports[sessionId];\n } else if (!sessionId) {\n transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n });\n transport.onclose = () => {\n if (transport.sessionId) {\n delete transports[transport.sessionId];\n }\n };\n const server = loadServer({ isLocal: false });\n await server.connect(transport);\n } else {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n\n await transport.handleRequest(req, res, req.body);\n\n const newSessionId = transport.sessionId;\n if (newSessionId && !transports[newSessionId]) {\n transports[newSessionId] = transport;\n }\n});\n\nrouter.get('/', async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n if (!sessionId || !transports[sessionId]) {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n\n await transports[sessionId].handleRequest(req, res);\n});\n\nrouter.delete('/', async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n if (!sessionId || !transports[sessionId]) {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n\n await transports[sessionId].handleRequest(req, res);\n});\n\napp.use('/', router);\napp.use('/health', (_req: Request, res: Response) => {\n res.send('OK');\n});\n\nconst PORT = process.env.PORT ?? 3000;\napp.listen(PORT, () => {\n console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);\n});\n"],"mappings":";;;;;;;;AAQA,MAAM,MAAM,SAAS;AACrB,MAAM,MAAM,IAAI,IAAI,MAAM;AAE1B,OAAO,OAAO;CACZ,MAAM;EAAC,QAAQ,IAAI;EAAS,QAAQ;EAAO;EAAc;EAAO;CAChE,OAAO;CACR,CAAC;AAEF,IAAI,KAAK,KAAK,KAAK,SAAS;AAC1B,KAAI,OAAO,+BAA+B,IAAI;AAC9C,KAAI,OAAO,gCAAgC,qBAAqB;AAChE,KAAI,OAAO,gCAAgC,+BAA+B;AAC1E,KAAI,IAAI,WAAW,WAAW;AAC5B,MAAI,WAAW,IAAI;AACnB;;AAEF,OAAM;EACN;AAEF,IAAI,IAAI,QAAQ,MAAM,CAAC;AACvB,MAAM,SAAS,QAAQ,QAAQ;AAE/B,MAAM,aAAqE,EAAE;AAE7E,OAAO,KAAK,KAAK,OAAO,KAAc,QAAkB;CACtD,MAAM,YAAY,IAAI,QAAQ;CAE9B,IAAI;AAEJ,KAAI,aAAa,WAAW,WAC1B,aAAY,WAAW;UACd,CAAC,WAAW;AACrB,cAAY,IAAI,8BAA8B,EAC5C,0BAA0B,YAAY,EACvC,CAAC;AACF,YAAU,gBAAgB;AACxB,OAAI,UAAU,UACZ,QAAO,WAAW,UAAU;;AAIhC,QADe,WAAW,EAAE,SAAS,OAAO,CAAC,CAChC,QAAQ,UAAU;QAC1B;AACL,MAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;AACrD;;AAGF,OAAM,UAAU,cAAc,KAAK,KAAK,IAAI,KAAK;CAEjD,MAAM,eAAe,UAAU;AAC/B,KAAI,gBAAgB,CAAC,WAAW,cAC9B,YAAW,gBAAgB;EAE7B;AAEF,OAAO,IAAI,KAAK,OAAO,KAAc,QAAkB;CACrD,MAAM,YAAY,IAAI,QAAQ;AAE9B,KAAI,CAAC,aAAa,CAAC,WAAW,YAAY;AACxC,MAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;AACrD;;AAGF,OAAM,WAAW,WAAW,cAAc,KAAK,IAAI;EACnD;AAEF,OAAO,OAAO,KAAK,OAAO,KAAc,QAAkB;CACxD,MAAM,YAAY,IAAI,QAAQ;AAE9B,KAAI,CAAC,aAAa,CAAC,WAAW,YAAY;AACxC,MAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;AACrD;;AAGF,OAAM,WAAW,WAAW,cAAc,KAAK,IAAI;EACnD;AAEF,IAAI,IAAI,KAAK,OAAO;AACpB,IAAI,IAAI,YAAY,MAAe,QAAkB;AACnD,KAAI,KAAK,KAAK;EACd;AAEF,MAAM,OAAO,QAAQ,IAAI,QAAQ;AACjC,IAAI,OAAO,YAAY;AACrB,SAAQ,KAAK,gDAAgD,OAAO;EACpE"}
@@ -1,3 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import{loadServer as e}from"./server.mjs";import{StdioServerTransport as t}from"@modelcontextprotocol/sdk/server/stdio.js";const n=e({isLocal:!0});(async()=>{let e=new t;await n.connect(e),console.error(`Intlayer MCP Server running on stdio`)})().catch(e=>{console.error(`Fatal error in main():`,e),process.exit(1)});
2
+ import { loadServer } from "./server.mjs";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+
5
+ //#region src/server/stdio.ts
6
+ const server = loadServer({ isLocal: true });
7
+ const main = async () => {
8
+ const transport = new StdioServerTransport();
9
+ await server.connect(transport);
10
+ console.error("Intlayer MCP Server running on stdio");
11
+ };
12
+ main().catch((error) => {
13
+ console.error("Fatal error in main():", error);
14
+ process.exit(1);
15
+ });
16
+
17
+ //#endregion
3
18
  //# sourceMappingURL=stdio.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.mjs","names":[],"sources":["../../../src/server/stdio.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { loadServer } from './server';\n\nconst server = loadServer({ isLocal: true });\n\nconst main = async () => {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n console.error('Intlayer MCP Server running on stdio');\n};\n\nmain().catch((error) => {\n console.error('Fatal error in main():', error);\n process.exit(1);\n});\n"],"mappings":";2HAKA,MAAM,EAAS,EAAW,CAAE,QAAS,GAAM,CAAC,EAE/B,SAAY,CACvB,IAAM,EAAY,IAAI,EACtB,MAAM,EAAO,QAAQ,EAAU,CAE/B,QAAQ,MAAM,uCAAuC,IAGjD,CAAC,MAAO,GAAU,CACtB,QAAQ,MAAM,yBAA0B,EAAM,CAC9C,QAAQ,KAAK,EAAE,EACf"}
1
+ {"version":3,"file":"stdio.mjs","names":[],"sources":["../../../src/server/stdio.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { loadServer } from './server';\n\nconst server = loadServer({ isLocal: true });\n\nconst main = async () => {\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n console.error('Intlayer MCP Server running on stdio');\n};\n\nmain().catch((error) => {\n console.error('Fatal error in main():', error);\n process.exit(1);\n});\n"],"mappings":";;;;;AAKA,MAAM,SAAS,WAAW,EAAE,SAAS,MAAM,CAAC;AAE5C,MAAM,OAAO,YAAY;CACvB,MAAM,YAAY,IAAI,sBAAsB;AAC5C,OAAM,OAAO,QAAQ,UAAU;AAE/B,SAAQ,MAAM,uCAAuC;;AAGvD,MAAM,CAAC,OAAO,UAAU;AACtB,SAAQ,MAAM,0BAA0B,MAAM;AAC9C,SAAQ,KAAK,EAAE;EACf"}