@vfarcic/dot-ai 1.11.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/ai-provider-factory.d.ts.map +1 -1
- package/dist/core/ai-provider-factory.js +1 -0
- package/dist/core/internal-tools.d.ts +34 -1
- package/dist/core/internal-tools.d.ts.map +1 -1
- package/dist/core/internal-tools.js +116 -1
- package/dist/core/mcp-client-manager.d.ts +88 -0
- package/dist/core/mcp-client-manager.d.ts.map +1 -0
- package/dist/core/mcp-client-manager.js +362 -0
- package/dist/core/mcp-client-registry.d.ts +36 -0
- package/dist/core/mcp-client-registry.d.ts.map +1 -0
- package/dist/core/mcp-client-registry.js +52 -0
- package/dist/core/mcp-client-types.d.ts +84 -0
- package/dist/core/mcp-client-types.d.ts.map +1 -0
- package/dist/core/mcp-client-types.js +24 -0
- package/dist/core/model-config.d.ts +1 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +1 -0
- package/dist/core/providers/vercel-provider.d.ts.map +1 -1
- package/dist/core/providers/vercel-provider.js +5 -0
- package/dist/interfaces/mcp.d.ts.map +1 -1
- package/dist/interfaces/mcp.js +13 -0
- package/dist/mcp/server.js +26 -1
- package/dist/tools/generate-manifests.d.ts.map +1 -1
- package/dist/tools/generate-manifests.js +2 -1
- package/dist/tools/impact-analysis.d.ts +51 -0
- package/dist/tools/impact-analysis.d.ts.map +1 -0
- package/dist/tools/impact-analysis.js +204 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -1
- package/dist/tools/operate-analysis.d.ts +1 -1
- package/dist/tools/operate-analysis.d.ts.map +1 -1
- package/dist/tools/operate-analysis.js +17 -6
- package/dist/tools/operate.d.ts +1 -1
- package/dist/tools/operate.d.ts.map +1 -1
- package/dist/tools/operate.js +1 -1
- package/dist/tools/organizational-data.d.ts +1 -1
- package/dist/tools/query.d.ts +1 -1
- package/dist/tools/query.d.ts.map +1 -1
- package/dist/tools/query.js +18 -8
- package/dist/tools/remediate.d.ts +8 -0
- package/dist/tools/remediate.d.ts.map +1 -1
- package/dist/tools/remediate.js +176 -41
- package/dist/tools/version.d.ts +12 -0
- package/dist/tools/version.d.ts.map +1 -1
- package/dist/tools/version.js +16 -1
- package/package.json +3 -1
- package/prompts/impact-analysis-system.md +32 -0
- package/prompts/remediate-system.md +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-provider-factory.d.ts","sourceRoot":"","sources":["../../src/core/ai-provider-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,UAAU,EACV,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-provider-factory.d.ts","sourceRoot":"","sources":["../../src/core/ai-provider-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,UAAU,EACV,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AA8BjC;;;;;;;;;;;;;;GAcG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU;IA2BnD;;;;;;;;;;OAUG;IACH,MAAM,CAAC,aAAa,IAAI,UAAU;IAoFlC;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAWrD;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM,EAAE;IAMxC;;;;;OAKG;IACH,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAGxD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,CAE7C"}
|
|
@@ -28,6 +28,7 @@ const PROVIDER_ENV_KEYS = {
|
|
|
28
28
|
google: 'GOOGLE_GENERATIVE_AI_API_KEY', // Standard Vercel AI SDK env var (also checks GOOGLE_API_KEY as fallback)
|
|
29
29
|
google_flash: 'GOOGLE_GENERATIVE_AI_API_KEY', // PRD #294: Uses same API key as regular Google
|
|
30
30
|
kimi: 'MOONSHOT_API_KEY', // PRD #353: Moonshot AI Kimi K2.5
|
|
31
|
+
alibaba: 'ALIBABA_API_KEY', // PRD #382: Alibaba Qwen 3.5 Plus
|
|
31
32
|
xai: 'XAI_API_KEY',
|
|
32
33
|
};
|
|
33
34
|
const IMPLEMENTED_PROVIDERS = Object.keys(model_config_1.CURRENT_MODELS);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Internal Agentic-Loop Tools (PRD #407)
|
|
2
|
+
* Internal Agentic-Loop Tools (PRD #407, PRD #408)
|
|
3
3
|
*
|
|
4
4
|
* Tools that run locally in the MCP server, available to the AI
|
|
5
5
|
* during investigation loops alongside plugin tools. NOT exposed
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* - git_clone: Clone a Git repo
|
|
10
10
|
* - fs_list: List files at a path
|
|
11
11
|
* - fs_read: Read a file at a path
|
|
12
|
+
* - git_create_pr: Create a PR with file changes (PRD #408)
|
|
12
13
|
*
|
|
13
14
|
* All filesystem operations are scoped to ./tmp/gitops-clones/
|
|
14
15
|
* to prevent path traversal attacks.
|
|
@@ -20,7 +21,39 @@ import type { AITool, ToolExecutor } from './ai-provider.interface.js';
|
|
|
20
21
|
* Exported for testing.
|
|
21
22
|
*/
|
|
22
23
|
export declare function validatePathWithinClones(inputPath: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Returns internal tools available to the AI during investigation.
|
|
26
|
+
* Note: git_create_pr is executor-only and not exposed to investigation.
|
|
27
|
+
*/
|
|
23
28
|
export declare function getInternalTools(): AITool[];
|
|
29
|
+
export interface GitCreatePrInput {
|
|
30
|
+
repoPath: string;
|
|
31
|
+
files: Array<{
|
|
32
|
+
path: string;
|
|
33
|
+
content: string;
|
|
34
|
+
}>;
|
|
35
|
+
title: string;
|
|
36
|
+
body?: string;
|
|
37
|
+
branchName: string;
|
|
38
|
+
baseBranch?: string;
|
|
39
|
+
}
|
|
40
|
+
export type GitCreatePrResult = {
|
|
41
|
+
success: true;
|
|
42
|
+
prUrl: string;
|
|
43
|
+
prNumber: number;
|
|
44
|
+
branch: string;
|
|
45
|
+
baseBranch: string;
|
|
46
|
+
filesChanged: string[];
|
|
47
|
+
} | {
|
|
48
|
+
success: true;
|
|
49
|
+
branch: string;
|
|
50
|
+
baseBranch: string;
|
|
51
|
+
filesChanged: string[];
|
|
52
|
+
error: string;
|
|
53
|
+
} | {
|
|
54
|
+
success: false;
|
|
55
|
+
error: string;
|
|
56
|
+
};
|
|
24
57
|
/**
|
|
25
58
|
* Create a ToolExecutor that handles internal agentic-loop tools.
|
|
26
59
|
* Designed to be passed as the fallbackExecutor to pluginManager.createToolExecutor().
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-tools.d.ts","sourceRoot":"","sources":["../../src/core/internal-tools.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"internal-tools.d.ts","sourceRoot":"","sources":["../../src/core/internal-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAsBvE;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAUlE;AAkBD;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAkD3C;AAiHD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,GAC9G;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC5F;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAgItC;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAqB1E;AAID;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,GAAE,MAAuB,GAAG,IAAI,CAoBxE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* Internal Agentic-Loop Tools (PRD #407)
|
|
3
|
+
* Internal Agentic-Loop Tools (PRD #407, PRD #408)
|
|
4
4
|
*
|
|
5
5
|
* Tools that run locally in the MCP server, available to the AI
|
|
6
6
|
* during investigation loops alongside plugin tools. NOT exposed
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* - git_clone: Clone a Git repo
|
|
11
11
|
* - fs_list: List files at a path
|
|
12
12
|
* - fs_read: Read a file at a path
|
|
13
|
+
* - git_create_pr: Create a PR with file changes (PRD #408)
|
|
13
14
|
*
|
|
14
15
|
* All filesystem operations are scoped to ./tmp/gitops-clones/
|
|
15
16
|
* to prevent path traversal attacks.
|
|
@@ -47,6 +48,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
47
48
|
return result;
|
|
48
49
|
};
|
|
49
50
|
})();
|
|
51
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
52
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
53
|
+
};
|
|
50
54
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
55
|
exports.validatePathWithinClones = validatePathWithinClones;
|
|
52
56
|
exports.getInternalTools = getInternalTools;
|
|
@@ -56,6 +60,7 @@ const fs = __importStar(require("fs"));
|
|
|
56
60
|
const path = __importStar(require("path"));
|
|
57
61
|
const git_utils_js_1 = require("./git-utils.js");
|
|
58
62
|
const solution_utils_js_1 = require("./solution-utils.js");
|
|
63
|
+
const simple_git_1 = __importDefault(require("simple-git"));
|
|
59
64
|
const CLONES_SUBDIR = 'gitops-clones';
|
|
60
65
|
const MAX_FILE_SIZE = 100 * 1024; // 100KB
|
|
61
66
|
const DEFAULT_TTL_MS = 60 * 60 * 1000; // 1 hour
|
|
@@ -94,6 +99,10 @@ function repoUrlToDirectoryName(repoUrl) {
|
|
|
94
99
|
}
|
|
95
100
|
}
|
|
96
101
|
// ─── Tool definitions ───
|
|
102
|
+
/**
|
|
103
|
+
* Returns internal tools available to the AI during investigation.
|
|
104
|
+
* Note: git_create_pr is executor-only and not exposed to investigation.
|
|
105
|
+
*/
|
|
97
106
|
function getInternalTools() {
|
|
98
107
|
return [
|
|
99
108
|
{
|
|
@@ -138,6 +147,8 @@ function getInternalTools() {
|
|
|
138
147
|
required: ['path'],
|
|
139
148
|
},
|
|
140
149
|
},
|
|
150
|
+
// git_create_pr is executor-only - not exposed during investigation
|
|
151
|
+
// It's only available via createInternalToolExecutor() during execution
|
|
141
152
|
];
|
|
142
153
|
}
|
|
143
154
|
// ─── Handlers ───
|
|
@@ -235,6 +246,109 @@ function handleFsRead(args) {
|
|
|
235
246
|
}
|
|
236
247
|
return fs.readFileSync(resolved, 'utf-8');
|
|
237
248
|
}
|
|
249
|
+
async function handleGitCreatePr(args) {
|
|
250
|
+
const repoPath = args.repoPath;
|
|
251
|
+
const files = args.files;
|
|
252
|
+
const title = args.title;
|
|
253
|
+
const body = args.body || '';
|
|
254
|
+
const branchName = args.branchName;
|
|
255
|
+
const baseBranch = args.baseBranch || 'main';
|
|
256
|
+
if (!repoPath) {
|
|
257
|
+
return { success: false, error: 'repoPath is required' };
|
|
258
|
+
}
|
|
259
|
+
if (!files || !Array.isArray(files) || files.length === 0) {
|
|
260
|
+
return { success: false, error: 'files array is required and must not be empty' };
|
|
261
|
+
}
|
|
262
|
+
if (!title) {
|
|
263
|
+
return { success: false, error: 'title is required' };
|
|
264
|
+
}
|
|
265
|
+
if (!branchName) {
|
|
266
|
+
return { success: false, error: 'branchName is required' };
|
|
267
|
+
}
|
|
268
|
+
let resolvedRepoPath;
|
|
269
|
+
try {
|
|
270
|
+
resolvedRepoPath = validatePathWithinClones(repoPath);
|
|
271
|
+
}
|
|
272
|
+
catch (err) {
|
|
273
|
+
return {
|
|
274
|
+
success: false,
|
|
275
|
+
error: `Invalid repo path: ${err instanceof Error ? err.message : String(err)}`,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
if (!fs.existsSync(resolvedRepoPath)) {
|
|
279
|
+
return {
|
|
280
|
+
success: false,
|
|
281
|
+
error: `Repository not found at path: ${repoPath}. It may have been cleaned up.`,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
const stat = fs.statSync(resolvedRepoPath);
|
|
285
|
+
if (!stat.isDirectory()) {
|
|
286
|
+
return { success: false, error: `Path is not a directory: ${repoPath}` };
|
|
287
|
+
}
|
|
288
|
+
try {
|
|
289
|
+
const git = (0, simple_git_1.default)(resolvedRepoPath);
|
|
290
|
+
await git.checkout(baseBranch);
|
|
291
|
+
const pushResult = await (0, git_utils_js_1.pushRepo)(resolvedRepoPath, files, title, {
|
|
292
|
+
branch: branchName,
|
|
293
|
+
});
|
|
294
|
+
const authConfig = (0, git_utils_js_1.getGitAuthConfigFromEnv)();
|
|
295
|
+
const token = await (0, git_utils_js_1.getAuthToken)(authConfig);
|
|
296
|
+
const remotes = await git.getRemotes(true);
|
|
297
|
+
const origin = remotes.find(r => r.name === 'origin');
|
|
298
|
+
if (!origin?.refs?.fetch) {
|
|
299
|
+
return { success: false, error: 'Could not find origin remote URL' };
|
|
300
|
+
}
|
|
301
|
+
const remoteUrl = (0, git_utils_js_1.scrubCredentials)(origin.refs.fetch);
|
|
302
|
+
const repoMatch = remoteUrl.match(/github\.com[/:]([^/]+\/[^/]+?)(?:\.git)?$/);
|
|
303
|
+
if (!repoMatch) {
|
|
304
|
+
return {
|
|
305
|
+
success: true,
|
|
306
|
+
branch: branchName,
|
|
307
|
+
baseBranch,
|
|
308
|
+
filesChanged: pushResult.filesAdded,
|
|
309
|
+
error: 'Automatic PR creation is only supported for GitHub repositories. Changes were pushed to the branch — create a PR/MR manually.',
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
const ownerRepo = repoMatch[1];
|
|
313
|
+
const [owner, repo] = ownerRepo.split('/');
|
|
314
|
+
const prResponse = await fetch(`https://api.github.com/repos/${owner}/${repo}/pulls`, {
|
|
315
|
+
method: 'POST',
|
|
316
|
+
headers: {
|
|
317
|
+
Authorization: `Bearer ${token}`,
|
|
318
|
+
'Content-Type': 'application/json',
|
|
319
|
+
Accept: 'application/vnd.github+json',
|
|
320
|
+
'User-Agent': 'dot-ai-remediate',
|
|
321
|
+
},
|
|
322
|
+
body: JSON.stringify({
|
|
323
|
+
title,
|
|
324
|
+
body,
|
|
325
|
+
head: branchName,
|
|
326
|
+
base: baseBranch,
|
|
327
|
+
}),
|
|
328
|
+
signal: AbortSignal.timeout(30000),
|
|
329
|
+
});
|
|
330
|
+
if (!prResponse.ok) {
|
|
331
|
+
const errorBody = await prResponse.text();
|
|
332
|
+
return {
|
|
333
|
+
success: false,
|
|
334
|
+
error: `GitHub API error (${prResponse.status}): ${errorBody}`,
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
const prData = (await prResponse.json());
|
|
338
|
+
return {
|
|
339
|
+
success: true,
|
|
340
|
+
prUrl: prData.html_url,
|
|
341
|
+
prNumber: prData.number,
|
|
342
|
+
branch: branchName,
|
|
343
|
+
baseBranch,
|
|
344
|
+
filesChanged: pushResult.filesAdded,
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
catch (err) {
|
|
348
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
349
|
+
return { success: false, error: (0, git_utils_js_1.scrubCredentials)(message) };
|
|
350
|
+
}
|
|
351
|
+
}
|
|
238
352
|
// ─── Combined executor ───
|
|
239
353
|
/**
|
|
240
354
|
* Create a ToolExecutor that handles internal agentic-loop tools.
|
|
@@ -245,6 +359,7 @@ function createInternalToolExecutor(sessionId) {
|
|
|
245
359
|
git_clone: (args) => handleGitClone(args, sessionId),
|
|
246
360
|
fs_list: handleFsList,
|
|
247
361
|
fs_read: handleFsRead,
|
|
362
|
+
git_create_pr: handleGitCreatePr,
|
|
248
363
|
};
|
|
249
364
|
return async (toolName, input) => {
|
|
250
365
|
const handler = handlers[toolName];
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Client Manager for dot-ai MCP Server Integration
|
|
3
|
+
*
|
|
4
|
+
* Connects to external MCP servers running in the cluster, discovers their tools,
|
|
5
|
+
* and makes them available to dot-ai operations (remediate, operate, query) via
|
|
6
|
+
* the attachTo routing mechanism.
|
|
7
|
+
*
|
|
8
|
+
* PRD #358: MCP Server Integration
|
|
9
|
+
*/
|
|
10
|
+
import { McpServerConfig, DiscoveredMcpServer, McpServerStats, McpAttachableOperation } from './mcp-client-types';
|
|
11
|
+
import { Logger } from './error-handling';
|
|
12
|
+
import { AITool, ToolExecutor } from './ai-provider.interface';
|
|
13
|
+
/**
|
|
14
|
+
* Manages MCP server connections, tool discovery, and tool routing.
|
|
15
|
+
*
|
|
16
|
+
* Follows the same structural patterns as PluginManager but uses
|
|
17
|
+
* the MCP SDK (Client + StreamableHTTPClientTransport) instead of HTTP REST.
|
|
18
|
+
*/
|
|
19
|
+
export declare class McpClientManager {
|
|
20
|
+
private readonly logger;
|
|
21
|
+
/** MCP SDK Client instances keyed by server name */
|
|
22
|
+
private readonly clients;
|
|
23
|
+
/** Transport instances keyed by server name (needed for cleanup) */
|
|
24
|
+
private readonly transports;
|
|
25
|
+
/** Discovered server metadata keyed by server name */
|
|
26
|
+
private readonly discoveredServers;
|
|
27
|
+
/** Maps namespaced tool name → server name for routing */
|
|
28
|
+
private readonly toolToServer;
|
|
29
|
+
constructor(logger: Logger);
|
|
30
|
+
/**
|
|
31
|
+
* Parse MCP server configuration from file.
|
|
32
|
+
*
|
|
33
|
+
* Reads from /etc/dot-ai-mcp/mcp-servers.json (mounted from ConfigMap in K8s).
|
|
34
|
+
* Returns empty array if file doesn't exist (MCP servers only work in-cluster).
|
|
35
|
+
* Throws on invalid JSON or malformed configuration.
|
|
36
|
+
*/
|
|
37
|
+
static parseMcpServerConfig(): McpServerConfig[];
|
|
38
|
+
/**
|
|
39
|
+
* Discover all configured MCP servers.
|
|
40
|
+
*
|
|
41
|
+
* Connects to each server, performs MCP handshake, and discovers available tools.
|
|
42
|
+
* All servers must connect successfully — any failure throws McpDiscoveryError.
|
|
43
|
+
*/
|
|
44
|
+
discoverMcpServers(configs: McpServerConfig[]): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Connect to a single MCP server and discover its tools.
|
|
47
|
+
*/
|
|
48
|
+
private connectAndDiscover;
|
|
49
|
+
/**
|
|
50
|
+
* Get tools available for a specific dot-ai operation, filtered by attachTo.
|
|
51
|
+
*
|
|
52
|
+
* Returns tools as AITool[] with namespaced names ({serverName}__{toolName}).
|
|
53
|
+
*/
|
|
54
|
+
getToolsForOperation(operation: McpAttachableOperation): AITool[];
|
|
55
|
+
/**
|
|
56
|
+
* Get all discovered tools across all servers.
|
|
57
|
+
*/
|
|
58
|
+
getAllDiscoveredTools(): AITool[];
|
|
59
|
+
/**
|
|
60
|
+
* Check if a tool name belongs to an MCP server (is namespaced).
|
|
61
|
+
*/
|
|
62
|
+
isMcpTool(toolName: string): boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Create a ToolExecutor that routes MCP tools to their servers.
|
|
65
|
+
*
|
|
66
|
+
* Returns a function compatible with toolLoop's toolExecutor parameter.
|
|
67
|
+
* MCP tools (namespaced) are routed to their MCP servers; non-MCP tools
|
|
68
|
+
* are routed to the optional fallback executor.
|
|
69
|
+
*/
|
|
70
|
+
createToolExecutor(fallbackExecutor?: ToolExecutor): ToolExecutor;
|
|
71
|
+
/**
|
|
72
|
+
* Get statistics about MCP server connections.
|
|
73
|
+
*/
|
|
74
|
+
getStats(): McpServerStats;
|
|
75
|
+
/**
|
|
76
|
+
* Get discovered server metadata.
|
|
77
|
+
*/
|
|
78
|
+
getDiscoveredServers(): DiscoveredMcpServer[];
|
|
79
|
+
/**
|
|
80
|
+
* Close all MCP server connections.
|
|
81
|
+
*/
|
|
82
|
+
close(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Convert an MCP tool definition to AITool format with namespaced name.
|
|
85
|
+
*/
|
|
86
|
+
private convertToAITool;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=mcp-client-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-client-manager.d.ts","sourceRoot":"","sources":["../../src/core/mcp-client-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EACL,eAAe,EAEf,mBAAmB,EACnB,cAAc,EAEd,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAW/D;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,oDAAoD;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyD;IAEpF,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA+C;IAEjF,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;gBAEnD,MAAM,EAAE,MAAM;IAI1B;;;;;;OAMG;IACH,MAAM,CAAC,oBAAoB,IAAI,eAAe,EAAE;IA+DhD;;;;;OAKG;IACG,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCnE;;OAEG;YACW,kBAAkB;IAmGhC;;;;OAIG;IACH,oBAAoB,CAAC,SAAS,EAAE,sBAAsB,GAAG,MAAM,EAAE;IAoBjE;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAejC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC;;;;;;OAMG;IACH,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,YAAY,GAAG,YAAY;IA6DjE;;OAEG;IACH,QAAQ,IAAI,cAAc;IAQ1B;;OAEG;IACH,oBAAoB,IAAI,mBAAmB,EAAE;IAI7C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB5B;;OAEG;IACH,OAAO,CAAC,eAAe;CAYxB"}
|