@miller-tech/uap 1.3.5 → 1.4.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.
- package/dist/bin/cli.js +285 -120
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/init.d.ts.map +1 -1
- package/dist/cli/init.js +3 -3
- package/dist/cli/init.js.map +1 -1
- package/dist/cli/task.js +9 -3
- package/dist/cli/task.js.map +1 -1
- package/dist/coordination/service.d.ts.map +1 -1
- package/dist/coordination/service.js +4 -1
- package/dist/coordination/service.js.map +1 -1
- package/dist/mcp-router/executor/client.d.ts.map +1 -1
- package/dist/mcp-router/executor/client.js +10 -3
- package/dist/mcp-router/executor/client.js.map +1 -1
- package/dist/mcp-router/output-compressor.d.ts.map +1 -1
- package/dist/mcp-router/output-compressor.js +146 -26
- package/dist/mcp-router/output-compressor.js.map +1 -1
- package/dist/mcp-router/search/fuzzy.d.ts +1 -0
- package/dist/mcp-router/search/fuzzy.d.ts.map +1 -1
- package/dist/mcp-router/search/fuzzy.js +16 -6
- package/dist/mcp-router/search/fuzzy.js.map +1 -1
- package/dist/mcp-router/server.d.ts +5 -2
- package/dist/mcp-router/server.d.ts.map +1 -1
- package/dist/mcp-router/server.js +125 -29
- package/dist/mcp-router/server.js.map +1 -1
- package/dist/memory/knowledge-graph.d.ts +2 -1
- package/dist/memory/knowledge-graph.d.ts.map +1 -1
- package/dist/memory/knowledge-graph.js +56 -33
- package/dist/memory/knowledge-graph.js.map +1 -1
- package/dist/policies/policy-gate.d.ts +14 -1
- package/dist/policies/policy-gate.d.ts.map +1 -1
- package/dist/policies/policy-gate.js +129 -12
- package/dist/policies/policy-gate.js.map +1 -1
- package/dist/policies/schemas/policy.d.ts +2 -2
- package/dist/tasks/service.d.ts +7 -2
- package/dist/tasks/service.d.ts.map +1 -1
- package/dist/tasks/service.js +90 -18
- package/dist/tasks/service.js.map +1 -1
- package/dist/tasks/types.d.ts +8 -0
- package/dist/tasks/types.d.ts.map +1 -1
- package/dist/tasks/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-compressor.d.ts","sourceRoot":"","sources":["../../src/mcp-router/output-compressor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,gBAAgB,
|
|
1
|
+
{"version":3,"file":"output-compressor.d.ts","sourceRoot":"","sources":["../../src/mcp-router/output-compressor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,SAAS,CAAC;CACjD;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,gBAAgB,CA8DlB"}
|
|
@@ -16,6 +16,20 @@ const MAX_SNIPPETS = 3;
|
|
|
16
16
|
*/
|
|
17
17
|
export function compressToolOutput(result, options = {}) {
|
|
18
18
|
const { maxBytes = DEFAULT_MAX_BYTES, intent } = options;
|
|
19
|
+
// Guard against null/undefined results that would produce "null"/"undefined" strings
|
|
20
|
+
// or crash Buffer.byteLength. Return empty string to avoid confusing the model
|
|
21
|
+
// with placeholder text that could trigger retries.
|
|
22
|
+
if (result === null || result === undefined) {
|
|
23
|
+
return {
|
|
24
|
+
output: '',
|
|
25
|
+
stats: {
|
|
26
|
+
originalBytes: 0,
|
|
27
|
+
compressedBytes: 0,
|
|
28
|
+
savings: '0%',
|
|
29
|
+
method: 'passthrough',
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
19
33
|
const serialized = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
|
|
20
34
|
const originalBytes = Buffer.byteLength(serialized, 'utf-8');
|
|
21
35
|
// Small output: pass through
|
|
@@ -84,13 +98,15 @@ function indexAndSearch(content, intent) {
|
|
|
84
98
|
insertMany(chunks.map((c, i) => ({ content: c, index: i })));
|
|
85
99
|
// Search with BM25 ranking
|
|
86
100
|
const sanitizedIntent = sanitizeFTS5Query(intent);
|
|
87
|
-
const results = db
|
|
101
|
+
const results = db
|
|
102
|
+
.prepare(`
|
|
88
103
|
SELECT content, rank
|
|
89
104
|
FROM output_fts
|
|
90
105
|
WHERE output_fts MATCH ?
|
|
91
106
|
ORDER BY rank
|
|
92
107
|
LIMIT ?
|
|
93
|
-
`)
|
|
108
|
+
`)
|
|
109
|
+
.all(sanitizedIntent, MAX_SNIPPETS);
|
|
94
110
|
// Extract vocabulary from all chunks for follow-up queries
|
|
95
111
|
const vocabulary = extractVocabulary(chunks);
|
|
96
112
|
if (results.length === 0) {
|
|
@@ -102,7 +118,7 @@ function indexAndSearch(content, intent) {
|
|
|
102
118
|
// Nothing matched, fall back to truncation
|
|
103
119
|
return smartTruncate(content, DEFAULT_MAX_BYTES);
|
|
104
120
|
}
|
|
105
|
-
const snippets = results.map(r => r.content);
|
|
121
|
+
const snippets = results.map((r) => r.content);
|
|
106
122
|
return formatIndexedResponse(snippets, vocabulary, chunks.length, content.length);
|
|
107
123
|
}
|
|
108
124
|
catch {
|
|
@@ -116,9 +132,7 @@ function indexAndSearch(content, intent) {
|
|
|
116
132
|
function formatIndexedResponse(snippets, vocabulary, totalChunks, totalBytes) {
|
|
117
133
|
const header = `[Indexed ${totalChunks} sections from ${formatBytes(totalBytes)} output — showing ${snippets.length} matching sections]`;
|
|
118
134
|
const body = snippets.map((s, i) => `--- Match ${i + 1} ---\n${s}`).join('\n\n');
|
|
119
|
-
const footer = vocabulary.length > 0
|
|
120
|
-
? `\n[Searchable terms: ${vocabulary.slice(0, 20).join(', ')}]`
|
|
121
|
-
: '';
|
|
135
|
+
const footer = vocabulary.length > 0 ? `\n[Searchable terms: ${vocabulary.slice(0, 20).join(', ')}]` : '';
|
|
122
136
|
return `${header}\n\n${body}${footer}`;
|
|
123
137
|
}
|
|
124
138
|
/**
|
|
@@ -160,26 +174,35 @@ function chunkByStructure(content) {
|
|
|
160
174
|
const lines = content.split('\n');
|
|
161
175
|
const chunkSize = Math.max(10, Math.ceil(lines.length / 20));
|
|
162
176
|
for (let i = 0; i < lines.length; i += chunkSize) {
|
|
163
|
-
const chunk = lines
|
|
177
|
+
const chunk = lines
|
|
178
|
+
.slice(i, i + chunkSize)
|
|
179
|
+
.join('\n')
|
|
180
|
+
.trim();
|
|
164
181
|
if (chunk)
|
|
165
182
|
chunks.push(chunk);
|
|
166
183
|
}
|
|
167
184
|
return chunks;
|
|
168
185
|
}
|
|
169
186
|
function sanitizeFTS5Query(query) {
|
|
170
|
-
const words = query
|
|
187
|
+
const words = query
|
|
188
|
+
.trim()
|
|
189
|
+
.split(/\s+/)
|
|
190
|
+
.filter((w) => w.length > 1);
|
|
171
191
|
if (words.length === 0)
|
|
172
192
|
return '""';
|
|
173
|
-
return words.map(w => `"${w.replace(/"/g, '""')}"`).join(' OR ');
|
|
193
|
+
return words.map((w) => `"${w.replace(/"/g, '""')}"`).join(' OR ');
|
|
174
194
|
}
|
|
175
195
|
/**
|
|
176
196
|
* Fallback keyword search when FTS5 match returns nothing.
|
|
177
197
|
*/
|
|
178
198
|
function keywordSearch(chunks, intent) {
|
|
179
|
-
const keywords = intent
|
|
199
|
+
const keywords = intent
|
|
200
|
+
.toLowerCase()
|
|
201
|
+
.split(/\s+/)
|
|
202
|
+
.filter((w) => w.length > 2);
|
|
180
203
|
if (keywords.length === 0)
|
|
181
204
|
return [];
|
|
182
|
-
const scored = chunks.map(chunk => {
|
|
205
|
+
const scored = chunks.map((chunk) => {
|
|
183
206
|
const lower = chunk.toLowerCase();
|
|
184
207
|
const score = keywords.reduce((sum, kw) => {
|
|
185
208
|
const matches = lower.split(kw).length - 1;
|
|
@@ -188,10 +211,10 @@ function keywordSearch(chunks, intent) {
|
|
|
188
211
|
return { chunk, score };
|
|
189
212
|
});
|
|
190
213
|
return scored
|
|
191
|
-
.filter(s => s.score > 0)
|
|
214
|
+
.filter((s) => s.score > 0)
|
|
192
215
|
.sort((a, b) => b.score - a.score)
|
|
193
216
|
.slice(0, MAX_SNIPPETS)
|
|
194
|
-
.map(s => s.chunk);
|
|
217
|
+
.map((s) => s.chunk);
|
|
195
218
|
}
|
|
196
219
|
/**
|
|
197
220
|
* Extract high-signal vocabulary terms from chunks for follow-up queries.
|
|
@@ -199,19 +222,116 @@ function keywordSearch(chunks, intent) {
|
|
|
199
222
|
function extractVocabulary(chunks) {
|
|
200
223
|
const wordFreq = new Map();
|
|
201
224
|
const stopWords = new Set([
|
|
202
|
-
'the',
|
|
203
|
-
'
|
|
204
|
-
'
|
|
205
|
-
'
|
|
206
|
-
'
|
|
207
|
-
'
|
|
208
|
-
'
|
|
209
|
-
'
|
|
210
|
-
'
|
|
211
|
-
'
|
|
212
|
-
'
|
|
213
|
-
'
|
|
214
|
-
'
|
|
225
|
+
'the',
|
|
226
|
+
'a',
|
|
227
|
+
'an',
|
|
228
|
+
'is',
|
|
229
|
+
'are',
|
|
230
|
+
'was',
|
|
231
|
+
'were',
|
|
232
|
+
'be',
|
|
233
|
+
'been',
|
|
234
|
+
'being',
|
|
235
|
+
'have',
|
|
236
|
+
'has',
|
|
237
|
+
'had',
|
|
238
|
+
'do',
|
|
239
|
+
'does',
|
|
240
|
+
'did',
|
|
241
|
+
'will',
|
|
242
|
+
'would',
|
|
243
|
+
'could',
|
|
244
|
+
'should',
|
|
245
|
+
'may',
|
|
246
|
+
'might',
|
|
247
|
+
'shall',
|
|
248
|
+
'can',
|
|
249
|
+
'need',
|
|
250
|
+
'dare',
|
|
251
|
+
'ought',
|
|
252
|
+
'used',
|
|
253
|
+
'to',
|
|
254
|
+
'of',
|
|
255
|
+
'in',
|
|
256
|
+
'for',
|
|
257
|
+
'on',
|
|
258
|
+
'with',
|
|
259
|
+
'at',
|
|
260
|
+
'by',
|
|
261
|
+
'from',
|
|
262
|
+
'as',
|
|
263
|
+
'into',
|
|
264
|
+
'through',
|
|
265
|
+
'during',
|
|
266
|
+
'before',
|
|
267
|
+
'after',
|
|
268
|
+
'above',
|
|
269
|
+
'below',
|
|
270
|
+
'and',
|
|
271
|
+
'but',
|
|
272
|
+
'or',
|
|
273
|
+
'nor',
|
|
274
|
+
'not',
|
|
275
|
+
'so',
|
|
276
|
+
'yet',
|
|
277
|
+
'both',
|
|
278
|
+
'either',
|
|
279
|
+
'neither',
|
|
280
|
+
'each',
|
|
281
|
+
'every',
|
|
282
|
+
'all',
|
|
283
|
+
'any',
|
|
284
|
+
'few',
|
|
285
|
+
'more',
|
|
286
|
+
'most',
|
|
287
|
+
'other',
|
|
288
|
+
'some',
|
|
289
|
+
'such',
|
|
290
|
+
'no',
|
|
291
|
+
'only',
|
|
292
|
+
'own',
|
|
293
|
+
'same',
|
|
294
|
+
'than',
|
|
295
|
+
'too',
|
|
296
|
+
'very',
|
|
297
|
+
'just',
|
|
298
|
+
'because',
|
|
299
|
+
'this',
|
|
300
|
+
'that',
|
|
301
|
+
'these',
|
|
302
|
+
'those',
|
|
303
|
+
'it',
|
|
304
|
+
'its',
|
|
305
|
+
'itself',
|
|
306
|
+
'they',
|
|
307
|
+
'them',
|
|
308
|
+
'their',
|
|
309
|
+
'what',
|
|
310
|
+
'which',
|
|
311
|
+
'who',
|
|
312
|
+
'whom',
|
|
313
|
+
'how',
|
|
314
|
+
'when',
|
|
315
|
+
'where',
|
|
316
|
+
'why',
|
|
317
|
+
'if',
|
|
318
|
+
'then',
|
|
319
|
+
'else',
|
|
320
|
+
'true',
|
|
321
|
+
'false',
|
|
322
|
+
'null',
|
|
323
|
+
'undefined',
|
|
324
|
+
'function',
|
|
325
|
+
'return',
|
|
326
|
+
'const',
|
|
327
|
+
'let',
|
|
328
|
+
'var',
|
|
329
|
+
'import',
|
|
330
|
+
'export',
|
|
331
|
+
'default',
|
|
332
|
+
'class',
|
|
333
|
+
'new',
|
|
334
|
+
'type',
|
|
215
335
|
]);
|
|
216
336
|
for (const chunk of chunks) {
|
|
217
337
|
const words = chunk.toLowerCase().match(/[a-z_][a-z0-9_-]{2,}/g) || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-compressor.js","sourceRoot":"","sources":["../../src/mcp-router/output-compressor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,MAAM,iBAAiB,GAAG,IAAI,CAAC,CAAC,+BAA+B;AAC/D,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,mCAAmC;AAClE,MAAM,YAAY,GAAG,CAAC,CAAC;AAcvB;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAe,EACf,UAAkD,EAAE;IAEpD,MAAM,EAAE,QAAQ,GAAG,iBAAiB,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"output-compressor.js","sourceRoot":"","sources":["../../src/mcp-router/output-compressor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../../src/mcp-router/search/fuzzy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKpE,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../../src/mcp-router/search/fuzzy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAKpE,UAAU,YAAY;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAkCD,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,OAAO,CAAe;IAE9B,OAAO,CAAC,SAAS,CAAqC;gBAE1C,OAAO,GAAE,YAAiB;IAOtC,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAQvC,KAAK,IAAI,IAAI;IAKb,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,gBAAgB,EAAE;IA4BrD,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,gBAAgB,EAAE;IAalE,WAAW,IAAI,cAAc,EAAE;IAI/B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAKvD,QAAQ,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;CAO/C"}
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
* Uses Fuse.js for semantic-like matching
|
|
4
4
|
*/
|
|
5
5
|
function tokenize(str) {
|
|
6
|
-
return str
|
|
6
|
+
return str
|
|
7
|
+
.toLowerCase()
|
|
8
|
+
.split(/[\s_\-./]+/)
|
|
9
|
+
.filter(Boolean);
|
|
7
10
|
}
|
|
8
11
|
function calculateScore(query, target) {
|
|
9
12
|
const queryTokens = tokenize(query);
|
|
@@ -30,6 +33,8 @@ function calculateScore(query, target) {
|
|
|
30
33
|
export class ToolSearchIndex {
|
|
31
34
|
tools = [];
|
|
32
35
|
options;
|
|
36
|
+
// O(1) lookup index for getToolByPath - avoids O(n) linear scan per execute_tool call
|
|
37
|
+
pathIndex = new Map();
|
|
33
38
|
constructor(options = {}) {
|
|
34
39
|
this.options = {
|
|
35
40
|
threshold: options.threshold ?? 0.3,
|
|
@@ -38,9 +43,14 @@ export class ToolSearchIndex {
|
|
|
38
43
|
}
|
|
39
44
|
addTools(tools) {
|
|
40
45
|
this.tools.push(...tools);
|
|
46
|
+
// Rebuild path index
|
|
47
|
+
for (const tool of tools) {
|
|
48
|
+
this.pathIndex.set(`${tool.serverName}.${tool.name}`, tool);
|
|
49
|
+
}
|
|
41
50
|
}
|
|
42
51
|
clear() {
|
|
43
52
|
this.tools = [];
|
|
53
|
+
this.pathIndex.clear();
|
|
44
54
|
}
|
|
45
55
|
search(query, limit = 10) {
|
|
46
56
|
const results = [];
|
|
@@ -66,9 +76,9 @@ export class ToolSearchIndex {
|
|
|
66
76
|
}
|
|
67
77
|
searchByServer(serverName, limit = 50) {
|
|
68
78
|
return this.tools
|
|
69
|
-
.filter(t => t.serverName === serverName)
|
|
79
|
+
.filter((t) => t.serverName === serverName)
|
|
70
80
|
.slice(0, limit)
|
|
71
|
-
.map(tool => ({
|
|
81
|
+
.map((tool) => ({
|
|
72
82
|
path: `${tool.serverName}.${tool.name}`,
|
|
73
83
|
name: tool.name,
|
|
74
84
|
description: tool.description,
|
|
@@ -80,11 +90,11 @@ export class ToolSearchIndex {
|
|
|
80
90
|
return [...this.tools];
|
|
81
91
|
}
|
|
82
92
|
getToolByPath(path) {
|
|
83
|
-
|
|
84
|
-
return this.
|
|
93
|
+
// O(1) lookup via Map index instead of O(n) linear scan
|
|
94
|
+
return this.pathIndex.get(path);
|
|
85
95
|
}
|
|
86
96
|
getStats() {
|
|
87
|
-
const servers = new Set(this.tools.map(t => t.serverName));
|
|
97
|
+
const servers = new Set(this.tools.map((t) => t.serverName));
|
|
88
98
|
return {
|
|
89
99
|
servers: servers.size,
|
|
90
100
|
tools: this.tools.length,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../../../src/mcp-router/search/fuzzy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../../../src/mcp-router/search/fuzzy.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,8 @@ export declare class McpRouter {
|
|
|
19
19
|
private toolsLoaded;
|
|
20
20
|
constructor(options?: RouterOptions);
|
|
21
21
|
/**
|
|
22
|
-
* Load tools from all configured MCP servers
|
|
22
|
+
* Load tools from all configured MCP servers.
|
|
23
|
+
* Uses Promise.allSettled for parallel discovery and keeps clients alive in the pool.
|
|
23
24
|
*/
|
|
24
25
|
loadTools(): Promise<void>;
|
|
25
26
|
/**
|
|
@@ -44,7 +45,9 @@ export declare class McpRouter {
|
|
|
44
45
|
getConfig(): McpConfig;
|
|
45
46
|
}
|
|
46
47
|
/**
|
|
47
|
-
* Run as stdio MCP server
|
|
48
|
+
* Run as stdio MCP server.
|
|
49
|
+
* Fully JSON-RPC 2.0 compliant: parse errors (-32700), invalid request (-32600),
|
|
50
|
+
* batch request support, jsonrpc field validation, and protocol version negotiation.
|
|
48
51
|
*/
|
|
49
52
|
export declare function runStdioServer(options?: RouterOptions): Promise<void>;
|
|
50
53
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp-router/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,yBAAyB,EAG1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EAGxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAkB,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,aAAkB;IAkBvC
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp-router/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,yBAAyB,EAG1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EAGxB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAkB,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,aAAkB;IAkBvC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA2ChC;;OAEG;IACH,kBAAkB,IAAI,KAAK,CAAC,OAAO,yBAAyB,GAAG,OAAO,uBAAuB,CAAC;IAI9F;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBnE;;OAEG;IACH,QAAQ,IAAI,WAAW;IAuBvB;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B;;OAEG;IACH,SAAS,IAAI,SAAS;CAGvB;AAKD;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8M/E"}
|