universal-agent-memory 1.0.18 → 1.0.20

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 (44) hide show
  1. package/dist/benchmarks/benchmark.d.ts +2 -2
  2. package/dist/bin/cli.js +30 -0
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/cli/mcp-router.d.ts +16 -0
  5. package/dist/cli/mcp-router.d.ts.map +1 -0
  6. package/dist/cli/mcp-router.js +143 -0
  7. package/dist/cli/mcp-router.js.map +1 -0
  8. package/dist/index.d.ts +2 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +2 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/mcp-router/config/parser.d.ts +9 -0
  13. package/dist/mcp-router/config/parser.d.ts.map +1 -0
  14. package/dist/mcp-router/config/parser.js +137 -0
  15. package/dist/mcp-router/config/parser.js.map +1 -0
  16. package/dist/mcp-router/executor/client.d.ts +31 -0
  17. package/dist/mcp-router/executor/client.d.ts.map +1 -0
  18. package/dist/mcp-router/executor/client.js +187 -0
  19. package/dist/mcp-router/executor/client.js.map +1 -0
  20. package/dist/mcp-router/index.d.ts +18 -0
  21. package/dist/mcp-router/index.d.ts.map +1 -0
  22. package/dist/mcp-router/index.js +16 -0
  23. package/dist/mcp-router/index.js.map +1 -0
  24. package/dist/mcp-router/search/fuzzy.d.ts +26 -0
  25. package/dist/mcp-router/search/fuzzy.d.ts.map +1 -0
  26. package/dist/mcp-router/search/fuzzy.js +94 -0
  27. package/dist/mcp-router/search/fuzzy.js.map +1 -0
  28. package/dist/mcp-router/server.d.ts +50 -0
  29. package/dist/mcp-router/server.d.ts.map +1 -0
  30. package/dist/mcp-router/server.js +229 -0
  31. package/dist/mcp-router/server.js.map +1 -0
  32. package/dist/mcp-router/tools/discover.d.ts +37 -0
  33. package/dist/mcp-router/tools/discover.d.ts.map +1 -0
  34. package/dist/mcp-router/tools/discover.js +65 -0
  35. package/dist/mcp-router/tools/discover.js.map +1 -0
  36. package/dist/mcp-router/tools/execute.d.ts +38 -0
  37. package/dist/mcp-router/tools/execute.d.ts.map +1 -0
  38. package/dist/mcp-router/tools/execute.js +92 -0
  39. package/dist/mcp-router/tools/execute.js.map +1 -0
  40. package/dist/mcp-router/types.d.ts +54 -0
  41. package/dist/mcp-router/types.d.ts.map +1 -0
  42. package/dist/mcp-router/types.js +6 -0
  43. package/dist/mcp-router/types.js.map +1 -0
  44. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp-router/server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAS5B,MAAM,OAAO,SAAS;IACZ,MAAM,CAAY;IAClB,WAAW,CAAkB;IAC7B,UAAU,CAAgB;IAC1B,OAAO,CAAgB;IACvB,WAAW,GAAG,KAAK,CAAC;IAE5B,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,OAAO,GAAG;YACb,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,KAAK;YACd,GAAG,OAAO;SACX,CAAC;QAEF,cAAc;QACd,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,IAAI,aAAa,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAE7B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAEvD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,+BAA+B,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,QAAQ,GAAqB,EAAE,CAAC;QAEtC,KAAK,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,IAAI,OAAO,EAAE,CAAC;YACjD,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBACvD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;gBACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;gBACxB,MAAM,CAAC,UAAU,EAAE,CAAC;gBAEpB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,YAAY,UAAU,KAAK,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,YAAY,UAAU,sBAAsB,KAAK,EAAE,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,mBAAmB,KAAK,CAAC,KAAK,eAAe,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,CAAC,yBAAyB,EAAE,uBAAuB,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,IAAa;QAC9C,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,CAAC;QAED,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,gBAAgB;gBACnB,OAAO,mBAAmB,CAAC,IAAiD,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAElG,KAAK,cAAc;gBACjB,OAAO,iBAAiB,CACtB,IAA+C,EAC/C,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,CAChB,CAAC;YAEJ;gBACE,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;QAEvD,yDAAyD;QACzD,MAAM,iBAAiB,GAAG,KAAK,GAAG,GAAG,CAAC;QAEtC,2BAA2B;QAC3B,MAAM,YAAY,GAAG,2BAA2B,EAAE,GAAG,yBAAyB,EAAE,CAAC;QAEjF,MAAM,OAAO,GAAG,iBAAiB,GAAG,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,YAAY,CAAC,GAAG,iBAAiB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG;YACjF,CAAC,CAAC,IAAI,CAAC;QAET,OAAO;YACL,YAAY,EAAE,OAAO;YACrB,UAAU,EAAE,KAAK;YACjB,iBAAiB;YACjB,YAAY;YACZ,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAyB,EAAE;IAC9D,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5D,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,SAAS,IAAI,CAAC,OAAe;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,SAAS,aAAa,CAAC,OAKtB;QACC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAEvC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,YAAY;gBACf,IAAI,CAAC;oBACH,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,MAAM,EAAE;wBACN,eAAe,EAAE,YAAY;wBAC7B,YAAY,EAAE;4BACZ,KAAK,EAAE,EAAE;yBACV;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,gBAAgB;4BACtB,OAAO,EAAE,OAAO;yBACjB;qBACF;iBACF,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,2BAA2B;gBAC9B,qBAAqB;gBACrB,MAAM;YAER,KAAK,YAAY;gBACf,IAAI,CAAC;oBACH,OAAO,EAAE,KAAK;oBACd,EAAE;oBACF,MAAM,EAAE;wBACN,KAAK,EAAE,MAAM,CAAC,kBAAkB,EAAE;qBACnC;iBACF,CAAC,CAAC;gBACH,MAAM;YAER,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAA8C,CAAC;gBACjF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC;qBAC9B,IAAI,CAAC,MAAM,CAAC,EAAE;oBACb,IAAI,CAAC;wBACH,OAAO,EAAE,KAAK;wBACd,EAAE;wBACF,MAAM,EAAE;4BACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;yBACnE;qBACF,CAAC,CAAC;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,KAAK,CAAC,EAAE;oBACb,IAAI,CAAC;wBACH,OAAO,EAAE,KAAK;wBACd,EAAE;wBACF,KAAK,EAAE;4BACL,IAAI,EAAE,CAAC,KAAK;4BACZ,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;yBAChE;qBACF,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACL,MAAM;YACR,CAAC;YAED;gBACE,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;oBACrB,IAAI,CAAC;wBACH,OAAO,EAAE,KAAK;wBACd,EAAE;wBACF,KAAK,EAAE;4BACL,IAAI,EAAE,CAAC,KAAK;4BACZ,OAAO,EAAE,qBAAqB,MAAM,EAAE;yBACvC;qBACF,CAAC,CAAC;gBACL,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;QACxC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE1B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAE3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAE3B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,aAAa,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC5D,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * discover_tools - Meta-tool for finding MCP tools
3
+ *
4
+ * This is one of the 2 tools exposed by the router (the other being execute_tool).
5
+ * Instead of loading 150+ tool definitions, the LLM uses this to find relevant tools.
6
+ */
7
+ import type { DiscoverToolsArgs, ToolSearchResult } from '../types.js';
8
+ import type { ToolSearchIndex } from '../search/fuzzy.js';
9
+ export declare const DISCOVER_TOOLS_DEFINITION: {
10
+ name: string;
11
+ description: string;
12
+ inputSchema: {
13
+ type: "object";
14
+ properties: {
15
+ query: {
16
+ type: string;
17
+ description: string;
18
+ };
19
+ limit: {
20
+ type: string;
21
+ description: string;
22
+ default: number;
23
+ };
24
+ server: {
25
+ type: string;
26
+ description: string;
27
+ };
28
+ };
29
+ required: string[];
30
+ };
31
+ };
32
+ export declare function handleDiscoverTools(args: DiscoverToolsArgs, searchIndex: ToolSearchIndex): {
33
+ tools: ToolSearchResult[];
34
+ hint: string;
35
+ };
36
+ export declare function estimateDiscoverToolsTokens(): number;
37
+ //# sourceMappingURL=discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../../src/mcp-router/tools/discover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;CA6BrC,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,iBAAiB,EACvB,WAAW,EAAE,eAAe,GAC3B;IAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CA0B7C;AAGD,wBAAgB,2BAA2B,IAAI,MAAM,CAIpD"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * discover_tools - Meta-tool for finding MCP tools
3
+ *
4
+ * This is one of the 2 tools exposed by the router (the other being execute_tool).
5
+ * Instead of loading 150+ tool definitions, the LLM uses this to find relevant tools.
6
+ */
7
+ export const DISCOVER_TOOLS_DEFINITION = {
8
+ name: 'discover_tools',
9
+ description: `Find MCP tools matching a natural language query. Returns tool paths that can be used with execute_tool.
10
+
11
+ Examples:
12
+ - "github issues" → finds github.create_issue, github.list_issues, etc.
13
+ - "file operations" → finds filesystem.read_file, filesystem.write_file, etc.
14
+ - "search" → finds tools across all servers with search capabilities
15
+
16
+ Use this FIRST to discover available tools, then use execute_tool with the returned path.`,
17
+ inputSchema: {
18
+ type: 'object',
19
+ properties: {
20
+ query: {
21
+ type: 'string',
22
+ description: 'Natural language search query (e.g., "create github issue", "read files", "search documentation")',
23
+ },
24
+ limit: {
25
+ type: 'number',
26
+ description: 'Maximum number of results to return (default: 10)',
27
+ default: 10,
28
+ },
29
+ server: {
30
+ type: 'string',
31
+ description: 'Optional: filter to specific server (e.g., "github", "filesystem")',
32
+ },
33
+ },
34
+ required: ['query'],
35
+ },
36
+ };
37
+ export function handleDiscoverTools(args, searchIndex) {
38
+ const { query, limit = 10, server } = args;
39
+ let results;
40
+ if (server) {
41
+ // Filter to specific server
42
+ results = searchIndex.searchByServer(server, limit);
43
+ if (query) {
44
+ // Further filter by query within server
45
+ const queryLower = query.toLowerCase();
46
+ results = results.filter(r => r.name.toLowerCase().includes(queryLower) ||
47
+ r.description.toLowerCase().includes(queryLower));
48
+ }
49
+ }
50
+ else {
51
+ results = searchIndex.search(query, limit);
52
+ }
53
+ // Format hint for LLM
54
+ const hint = results.length > 0
55
+ ? `Found ${results.length} tools. Use execute_tool with the path (e.g., execute_tool({ path: "${results[0].path}", args: {...} }))`
56
+ : 'No tools found. Try a different query or check available servers with discover_tools({ query: "*" })';
57
+ return { tools: results, hint };
58
+ }
59
+ // Token estimation for the discover_tools definition
60
+ export function estimateDiscoverToolsTokens() {
61
+ const json = JSON.stringify(DISCOVER_TOOLS_DEFINITION);
62
+ // Rough estimate: ~4 chars per token
63
+ return Math.ceil(json.length / 4);
64
+ }
65
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/mcp-router/tools/discover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE;;;;;;;0FAO2E;IACxF,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mGAAmG;aACjH;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;gBAChE,OAAO,EAAE,EAAE;aACZ;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oEAAoE;aAClF;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACpB;CACF,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,IAAuB,EACvB,WAA4B;IAE5B,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAE3C,IAAI,OAA2B,CAAC;IAEhC,IAAI,MAAM,EAAE,CAAC;QACX,4BAA4B;QAC5B,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpD,IAAI,KAAK,EAAE,CAAC;YACV,wCAAwC;YACxC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACzC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CACjD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,sBAAsB;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,uEAAuE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB;QACnI,CAAC,CAAC,sGAAsG,CAAC;IAE3G,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,2BAA2B;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;IACvD,qCAAqC;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * execute_tool - Meta-tool for executing MCP tools
3
+ *
4
+ * This is one of the 2 tools exposed by the router (the other being discover_tools).
5
+ * Routes tool calls to the appropriate MCP server.
6
+ */
7
+ import type { ExecuteToolArgs } from '../types.js';
8
+ import type { ToolSearchIndex } from '../search/fuzzy.js';
9
+ import type { McpClientPool } from '../executor/client.js';
10
+ export declare const EXECUTE_TOOL_DEFINITION: {
11
+ name: string;
12
+ description: string;
13
+ inputSchema: {
14
+ type: "object";
15
+ properties: {
16
+ path: {
17
+ type: string;
18
+ description: string;
19
+ };
20
+ args: {
21
+ type: string;
22
+ description: string;
23
+ additionalProperties: boolean;
24
+ };
25
+ };
26
+ required: string[];
27
+ };
28
+ };
29
+ export interface ExecuteResult {
30
+ success: boolean;
31
+ result?: unknown;
32
+ error?: string;
33
+ toolPath: string;
34
+ executionTimeMs: number;
35
+ }
36
+ export declare function handleExecuteTool(args: ExecuteToolArgs, searchIndex: ToolSearchIndex, clientPool: McpClientPool): Promise<ExecuteResult>;
37
+ export declare function estimateExecuteToolTokens(): number;
38
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/mcp-router/tools/execute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;CA2BnC,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,eAAe,EACrB,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,aAAa,GACxB,OAAO,CAAC,aAAa,CAAC,CAwDxB;AAGD,wBAAgB,yBAAyB,IAAI,MAAM,CAIlD"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * execute_tool - Meta-tool for executing MCP tools
3
+ *
4
+ * This is one of the 2 tools exposed by the router (the other being discover_tools).
5
+ * Routes tool calls to the appropriate MCP server.
6
+ */
7
+ export const EXECUTE_TOOL_DEFINITION = {
8
+ name: 'execute_tool',
9
+ description: `Execute an MCP tool by its path. Use discover_tools first to find the correct path.
10
+
11
+ Path format: "server.tool_name" (e.g., "github.create_issue", "filesystem.read_file")
12
+
13
+ Example:
14
+ 1. First: discover_tools({ query: "github issues" })
15
+ → Returns: [{ path: "github.create_issue", ... }]
16
+ 2. Then: execute_tool({ path: "github.create_issue", args: { title: "Bug", body: "..." } })
17
+
18
+ The args object should match the tool's expected input schema.`,
19
+ inputSchema: {
20
+ type: 'object',
21
+ properties: {
22
+ path: {
23
+ type: 'string',
24
+ description: 'Tool path in format "server.tool_name" (from discover_tools results)',
25
+ },
26
+ args: {
27
+ type: 'object',
28
+ description: 'Arguments to pass to the tool (schema depends on the specific tool)',
29
+ additionalProperties: true,
30
+ },
31
+ },
32
+ required: ['path'],
33
+ },
34
+ };
35
+ export async function handleExecuteTool(args, searchIndex, clientPool) {
36
+ const startTime = Date.now();
37
+ const { path, args: toolArgs = {} } = args;
38
+ // Parse path
39
+ const dotIndex = path.indexOf('.');
40
+ if (dotIndex === -1) {
41
+ return {
42
+ success: false,
43
+ error: `Invalid tool path "${path}". Expected format: "server.tool_name"`,
44
+ toolPath: path,
45
+ executionTimeMs: Date.now() - startTime,
46
+ };
47
+ }
48
+ const serverName = path.slice(0, dotIndex);
49
+ const toolName = path.slice(dotIndex + 1);
50
+ // Find tool definition
51
+ const tool = searchIndex.getToolByPath(path);
52
+ if (!tool) {
53
+ // Try fuzzy match suggestion
54
+ const suggestions = searchIndex.search(toolName, 3);
55
+ const suggestionText = suggestions.length > 0
56
+ ? ` Did you mean: ${suggestions.map(s => s.path).join(', ')}?`
57
+ : '';
58
+ return {
59
+ success: false,
60
+ error: `Tool "${path}" not found.${suggestionText}`,
61
+ toolPath: path,
62
+ executionTimeMs: Date.now() - startTime,
63
+ };
64
+ }
65
+ // Get or create client for this server
66
+ const client = clientPool.getClient(serverName, tool.serverConfig);
67
+ try {
68
+ await client.connect();
69
+ const result = await client.callTool(toolName, toolArgs);
70
+ return {
71
+ success: true,
72
+ result,
73
+ toolPath: path,
74
+ executionTimeMs: Date.now() - startTime,
75
+ };
76
+ }
77
+ catch (error) {
78
+ return {
79
+ success: false,
80
+ error: error instanceof Error ? error.message : String(error),
81
+ toolPath: path,
82
+ executionTimeMs: Date.now() - startTime,
83
+ };
84
+ }
85
+ }
86
+ // Token estimation for the execute_tool definition
87
+ export function estimateExecuteToolTokens() {
88
+ const json = JSON.stringify(EXECUTE_TOOL_DEFINITION);
89
+ // Rough estimate: ~4 chars per token
90
+ return Math.ceil(json.length / 4);
91
+ }
92
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/mcp-router/tools/execute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE;;;;;;;;;+DASgD;IAC7D,WAAW,EAAE;QACX,IAAI,EAAE,QAAiB;QACvB,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sEAAsE;aACpF;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,qEAAqE;gBAClF,oBAAoB,EAAE,IAAI;aAC3B;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACF,CAAC;AAUF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAqB,EACrB,WAA4B,EAC5B,UAAyB;IAEzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAE3C,aAAa;IACb,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,sBAAsB,IAAI,wCAAwC;YACzE,QAAQ,EAAE,IAAI;YACd,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACxC,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IAE1C,uBAAuB;IACvB,MAAM,IAAI,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,6BAA6B;QAC7B,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC;YAC3C,CAAC,CAAC,kBAAkB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YAC9D,CAAC,CAAC,EAAE,CAAC;QAEP,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,SAAS,IAAI,eAAe,cAAc,EAAE;YACnD,QAAQ,EAAE,IAAI;YACd,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACxC,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAEnE,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAmC,CAAC,CAAC;QAEpF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM;YACN,QAAQ,EAAE,IAAI;YACd,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACxC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,QAAQ,EAAE,IAAI;YACd,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACxC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,yBAAyB;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IACrD,qCAAqC;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * MCP Router Types
3
+ * Lightweight hierarchical router for 98%+ token reduction
4
+ */
5
+ export interface McpServerConfig {
6
+ command?: string;
7
+ args?: string[];
8
+ env?: Record<string, string>;
9
+ url?: string;
10
+ transport?: 'stdio' | 'http' | 'sse';
11
+ }
12
+ export interface McpConfig {
13
+ mcpServers: Record<string, McpServerConfig>;
14
+ }
15
+ export interface ToolDefinition {
16
+ name: string;
17
+ description: string;
18
+ inputSchema: {
19
+ type: 'object';
20
+ properties: Record<string, unknown>;
21
+ required?: string[];
22
+ };
23
+ serverName: string;
24
+ serverConfig: McpServerConfig;
25
+ }
26
+ export interface ToolSearchResult {
27
+ path: string;
28
+ name: string;
29
+ description: string;
30
+ server: string;
31
+ score: number;
32
+ }
33
+ export interface DiscoverToolsArgs {
34
+ query: string;
35
+ limit?: number;
36
+ server?: string;
37
+ }
38
+ export interface ExecuteToolArgs {
39
+ path: string;
40
+ args?: Record<string, unknown>;
41
+ }
42
+ export interface ToolRegistry {
43
+ tools: Map<string, ToolDefinition>;
44
+ servers: Map<string, McpServerConfig>;
45
+ searchIndex: unknown;
46
+ }
47
+ export interface RouterStats {
48
+ totalServers: number;
49
+ totalTools: number;
50
+ traditionalTokens: number;
51
+ routerTokens: number;
52
+ savings: string;
53
+ }
54
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/mcp-router/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;CACtC;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACnC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtC,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * MCP Router Types
3
+ * Lightweight hierarchical router for 98%+ token reduction
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/mcp-router/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "universal-agent-memory",
3
- "version": "1.0.18",
3
+ "version": "1.0.20",
4
4
  "description": "Universal AI agent memory system - CLAUDE.md templates, memory, worktrees for Claude Code, Factory.AI, VSCode, OpenCode",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",