@inkeep/agents-sdk 0.1.0 → 0.1.6

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 (69) hide show
  1. package/LICENSE.md +22 -17
  2. package/SUPPLEMENTAL_TERMS.md +40 -0
  3. package/dist/index.cjs +2863 -0
  4. package/dist/index.d.cts +919 -0
  5. package/dist/index.d.ts +919 -11
  6. package/dist/index.js +2840 -10
  7. package/package.json +24 -18
  8. package/dist/__tests__/utils/testTenant.d.ts +0 -7
  9. package/dist/__tests__/utils/testTenant.d.ts.map +0 -1
  10. package/dist/__tests__/utils/testTenant.js +0 -10
  11. package/dist/__tests__/utils/testTenant.js.map +0 -1
  12. package/dist/agent.d.ts +0 -47
  13. package/dist/agent.d.ts.map +0 -1
  14. package/dist/agent.js +0 -601
  15. package/dist/agent.js.map +0 -1
  16. package/dist/artifact-component.d.ts +0 -27
  17. package/dist/artifact-component.d.ts.map +0 -1
  18. package/dist/artifact-component.js +0 -117
  19. package/dist/artifact-component.js.map +0 -1
  20. package/dist/builders.d.ts +0 -211
  21. package/dist/builders.d.ts.map +0 -1
  22. package/dist/builders.js +0 -244
  23. package/dist/builders.js.map +0 -1
  24. package/dist/data-component.d.ts +0 -25
  25. package/dist/data-component.d.ts.map +0 -1
  26. package/dist/data-component.js +0 -113
  27. package/dist/data-component.js.map +0 -1
  28. package/dist/environment-settings.d.ts +0 -28
  29. package/dist/environment-settings.d.ts.map +0 -1
  30. package/dist/environment-settings.js +0 -78
  31. package/dist/environment-settings.js.map +0 -1
  32. package/dist/externalAgent.d.ts +0 -58
  33. package/dist/externalAgent.d.ts.map +0 -1
  34. package/dist/externalAgent.js +0 -161
  35. package/dist/externalAgent.js.map +0 -1
  36. package/dist/graph.d.ts +0 -200
  37. package/dist/graph.d.ts.map +0 -1
  38. package/dist/graph.js +0 -1294
  39. package/dist/graph.js.map +0 -1
  40. package/dist/graphFullClient.d.ts +0 -22
  41. package/dist/graphFullClient.d.ts.map +0 -1
  42. package/dist/graphFullClient.js +0 -189
  43. package/dist/graphFullClient.js.map +0 -1
  44. package/dist/hosted-tool-manager.d.ts +0 -28
  45. package/dist/hosted-tool-manager.d.ts.map +0 -1
  46. package/dist/hosted-tool-manager.js +0 -256
  47. package/dist/hosted-tool-manager.js.map +0 -1
  48. package/dist/index.d.ts.map +0 -1
  49. package/dist/index.js.map +0 -1
  50. package/dist/ipc-hosted-tool-manager.d.ts +0 -51
  51. package/dist/ipc-hosted-tool-manager.d.ts.map +0 -1
  52. package/dist/ipc-hosted-tool-manager.js +0 -409
  53. package/dist/ipc-hosted-tool-manager.js.map +0 -1
  54. package/dist/module-hosted-tool-manager.d.ts +0 -37
  55. package/dist/module-hosted-tool-manager.d.ts.map +0 -1
  56. package/dist/module-hosted-tool-manager.js +0 -375
  57. package/dist/module-hosted-tool-manager.js.map +0 -1
  58. package/dist/runner.d.ts +0 -38
  59. package/dist/runner.d.ts.map +0 -1
  60. package/dist/runner.js +0 -164
  61. package/dist/runner.js.map +0 -1
  62. package/dist/tool.d.ts +0 -29
  63. package/dist/tool.d.ts.map +0 -1
  64. package/dist/tool.js +0 -122
  65. package/dist/tool.js.map +0 -1
  66. package/dist/types.d.ts +0 -285
  67. package/dist/types.d.ts.map +0 -1
  68. package/dist/types.js +0 -37
  69. package/dist/types.js.map +0 -1
@@ -1,51 +0,0 @@
1
- import { type ChildProcess } from 'node:child_process';
2
- export interface IPCToolFunction {
3
- name: string;
4
- description?: string;
5
- execute: (params: any) => Promise<any>;
6
- parameters?: Record<string, any>;
7
- }
8
- export interface IPCMessage {
9
- type: 'execute-function' | 'function-result' | 'server-ready' | 'error';
10
- requestId?: string;
11
- toolName?: string;
12
- params?: any;
13
- result?: any;
14
- error?: string;
15
- port?: number;
16
- message?: string;
17
- }
18
- export interface IPCHostedToolServer {
19
- toolFunction: IPCToolFunction;
20
- process?: ChildProcess;
21
- port: number;
22
- serverUrl: string;
23
- status: 'starting' | 'running' | 'stopped' | 'error';
24
- pid?: number;
25
- serverFile: string;
26
- }
27
- export declare class IPCHostedToolManager {
28
- private servers;
29
- private toolFunctions;
30
- private pendingRequests;
31
- private portCounter;
32
- private readonly baseDir;
33
- private requestIdCounter;
34
- constructor();
35
- deployIPCTool(toolFunction: IPCToolFunction): Promise<IPCHostedToolServer>;
36
- stopTool(toolName: string): Promise<void>;
37
- getServer(toolName: string): IPCHostedToolServer | undefined;
38
- getAllServers(): IPCHostedToolServer[];
39
- private getToolId;
40
- private getNextPort;
41
- private generateRequestId;
42
- private generateMCPServerChild;
43
- private createIPCMCPServerCode;
44
- private startIPCServer;
45
- private handleIPCMessage;
46
- private handleFunctionExecution;
47
- private cleanupPendingRequests;
48
- private waitForServerReady;
49
- }
50
- export declare const ipcHostedToolManager: IPCHostedToolManager;
51
- //# sourceMappingURL=ipc-hosted-tool-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ipc-hosted-tool-manager.d.ts","sourceRoot":"","sources":["../src/ipc-hosted-tool-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,oBAAoB,CAAC;AAO9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,cAAc,GAAG,OAAO,CAAC;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,OAAO,CAA0C;IACzD,OAAO,CAAC,aAAa,CAAsC;IAC3D,OAAO,CAAC,eAAe,CAGnB;IACJ,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,gBAAgB,CAAK;;IASvB,aAAa,CAAC,YAAY,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiD1E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgC/C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAK5D,aAAa,IAAI,mBAAmB,EAAE;IAItC,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,iBAAiB;YAIX,sBAAsB;IAgCpC,OAAO,CAAC,sBAAsB;YA6JhB,cAAc;IAsD5B,OAAO,CAAC,gBAAgB;YAmBV,uBAAuB;IA8CrC,OAAO,CAAC,sBAAsB;YAWhB,kBAAkB;CAuBjC;AAGD,eAAO,MAAM,oBAAoB,sBAA6B,CAAC"}
@@ -1,409 +0,0 @@
1
- import { spawn } from 'node:child_process';
2
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
3
- import { join } from 'node:path';
4
- import { getLogger } from '@inkeep/agents-core';
5
- const logger = getLogger('ipc-hosted-tool-manager');
6
- export class IPCHostedToolManager {
7
- servers = new Map();
8
- toolFunctions = new Map();
9
- pendingRequests = new Map();
10
- portCounter = 3011;
11
- baseDir;
12
- requestIdCounter = 0;
13
- constructor() {
14
- this.baseDir = join(process.cwd(), '.ipc-hosted-tools');
15
- if (!existsSync(this.baseDir)) {
16
- mkdirSync(this.baseDir, { recursive: true });
17
- }
18
- }
19
- async deployIPCTool(toolFunction) {
20
- const toolId = this.getToolId(toolFunction.name);
21
- // Check if tool is already deployed
22
- if (this.servers.has(toolId)) {
23
- const existingServer = this.servers.get(toolId);
24
- if (existingServer.status === 'running') {
25
- logger.info({ toolId }, 'IPC tool already deployed and running');
26
- return existingServer;
27
- }
28
- }
29
- const port = this.getNextPort();
30
- const serverUrl = `http://localhost:${port}/mcp`;
31
- // Store the tool function in our registry (NO SERIALIZATION!)
32
- this.toolFunctions.set(toolId, toolFunction);
33
- const server = {
34
- toolFunction,
35
- port,
36
- serverUrl,
37
- status: 'starting',
38
- serverFile: '',
39
- };
40
- this.servers.set(toolId, server);
41
- try {
42
- await this.generateMCPServerChild(server);
43
- await this.startIPCServer(server);
44
- // Wait for server to be ready
45
- await this.waitForServerReady(server);
46
- server.status = 'running';
47
- logger.info({ toolId, port, serverUrl }, 'IPC tool deployed successfully');
48
- return server;
49
- }
50
- catch (error) {
51
- server.status = 'error';
52
- logger.error({ toolId, error: error instanceof Error ? error.message : 'Unknown error' }, 'Failed to deploy IPC tool');
53
- throw error;
54
- }
55
- }
56
- async stopTool(toolName) {
57
- const toolId = this.getToolId(toolName);
58
- const server = this.servers.get(toolId);
59
- if (!server || !server.process) {
60
- logger.warn({ toolId }, 'IPC tool not found or not running');
61
- return;
62
- }
63
- return new Promise((resolve) => {
64
- server.process.on('exit', () => {
65
- server.status = 'stopped';
66
- server.process = undefined;
67
- server.pid = undefined;
68
- // Clean up function registry and pending requests
69
- this.toolFunctions.delete(toolId);
70
- this.cleanupPendingRequests(toolId);
71
- logger.info({ toolId }, 'IPC tool stopped successfully');
72
- resolve();
73
- });
74
- server.process.kill('SIGTERM');
75
- // Force kill after 5 seconds
76
- setTimeout(() => {
77
- if (server.process && !server.process.killed) {
78
- server.process.kill('SIGKILL');
79
- }
80
- }, 5000);
81
- });
82
- }
83
- getServer(toolName) {
84
- const toolId = this.getToolId(toolName);
85
- return this.servers.get(toolId);
86
- }
87
- getAllServers() {
88
- return Array.from(this.servers.values());
89
- }
90
- getToolId(name) {
91
- return name
92
- .toLowerCase()
93
- .replace(/[^a-z0-9]+/g, '-')
94
- .replace(/^-+|-+$/g, '');
95
- }
96
- getNextPort() {
97
- return this.portCounter++;
98
- }
99
- generateRequestId() {
100
- return `req_${++this.requestIdCounter}_${Date.now()}`;
101
- }
102
- async generateMCPServerChild(server) {
103
- const toolId = this.getToolId(server.toolFunction.name);
104
- const serverDir = join(this.baseDir, toolId);
105
- if (!existsSync(serverDir)) {
106
- mkdirSync(serverDir, { recursive: true });
107
- }
108
- // Create the minimal MCP server that communicates via IPC
109
- const serverCode = this.createIPCMCPServerCode(server, toolId);
110
- const serverFile = join(serverDir, 'server.mjs');
111
- writeFileSync(serverFile, serverCode, 'utf8');
112
- server.serverFile = serverFile;
113
- // Create package.json for the child server
114
- const packageJson = {
115
- name: `ipc-hosted-tool-${toolId}`,
116
- version: '1.0.0',
117
- type: 'module',
118
- main: 'server.mjs',
119
- dependencies: {
120
- '@modelcontextprotocol/sdk': '^1.12.1',
121
- zod: '^3.25.31',
122
- },
123
- };
124
- writeFileSync(join(serverDir, 'package.json'), JSON.stringify(packageJson, null, 2), 'utf8');
125
- logger.info({ toolId, serverFile }, 'Generated IPC-based MCP server code');
126
- }
127
- createIPCMCPServerCode(server, toolId) {
128
- return `#!/usr/bin/env node
129
- import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
130
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
131
- import { z } from 'zod';
132
- import { createServer } from 'node:http';
133
-
134
- const server = new McpServer({
135
- name: '${server.toolFunction.name}',
136
- version: '1.0.0',
137
- }, { capabilities: { logging: {} } });
138
-
139
- // Parameter schema
140
- const parameterSchema = z.object({${server.toolFunction.parameters
141
- ? Object.keys(server.toolFunction.parameters)
142
- .map((key) => `\n ${key}: z.any()`)
143
- .join(',') + '\n'
144
- : ''}});
145
-
146
- // IPC communication state
147
- const pendingRequests = new Map();
148
- let requestIdCounter = 0;
149
-
150
- // Generate unique request ID
151
- function generateRequestId() {
152
- return \`child_req_\${++requestIdCounter}_\${Date.now()}\`;
153
- }
154
-
155
- // Execute function via IPC to parent process
156
- async function executeViaIPC(params) {
157
- return new Promise((resolve, reject) => {
158
- const requestId = generateRequestId();
159
-
160
- // Set up timeout (30 seconds)
161
- const timeout = setTimeout(() => {
162
- if (pendingRequests.has(requestId)) {
163
- pendingRequests.delete(requestId);
164
- reject(new Error('Function execution timeout'));
165
- }
166
- }, 30000);
167
-
168
- // Store promise handlers
169
- pendingRequests.set(requestId, { resolve, reject, timeout });
170
-
171
- // Send execution request to parent process
172
- process.send({
173
- type: 'execute-function',
174
- requestId,
175
- toolName: '${server.toolFunction.name}',
176
- params
177
- });
178
- });
179
- }
180
-
181
- // Handle IPC messages from parent process
182
- process.on('message', (message) => {
183
- if (message.type === 'function-result') {
184
- const { requestId, result, error } = message;
185
- const pending = pendingRequests.get(requestId);
186
-
187
- if (pending) {
188
- clearTimeout(pending.timeout);
189
- pendingRequests.delete(requestId);
190
-
191
- if (error) {
192
- pending.reject(new Error(error));
193
- } else {
194
- pending.resolve(result);
195
- }
196
- }
197
- }
198
- });
199
-
200
- // Register the tool with MCP server
201
- server.tool('${toolId}', '${server.toolFunction.description || ''}', parameterSchema.shape, async (params) => {
202
- try {
203
- const result = await executeViaIPC(params);
204
- return {
205
- content: [{
206
- type: 'text',
207
- text: typeof result === 'string' ? result : JSON.stringify(result)
208
- }]
209
- };
210
- } catch (error) {
211
- return {
212
- content: [{
213
- type: 'text',
214
- text: \`Error executing tool: \${error instanceof Error ? error.message : 'Unknown error'}\`
215
- }],
216
- isError: true
217
- };
218
- }
219
- });
220
-
221
- // Create HTTP server
222
- const httpServer = createServer();
223
- const transport = new StreamableHTTPServerTransport({});
224
-
225
- httpServer.on('request', async (req, res) => {
226
- if (req.url === '/mcp' && req.method === 'POST') {
227
- let body = '';
228
- req.on('data', chunk => body += chunk);
229
- req.on('end', async () => {
230
- try {
231
- const jsonBody = JSON.parse(body);
232
- await transport.handleRequest(req, res, jsonBody);
233
- } catch (error) {
234
- res.writeHead(500, { 'Content-Type': 'application/json' });
235
- res.end(JSON.stringify({ error: 'Invalid JSON' }));
236
- }
237
- });
238
- } else if (req.url === '/health' && req.method === 'GET') {
239
- res.writeHead(200, { 'Content-Type': 'application/json' });
240
- res.end(JSON.stringify({
241
- status: 'healthy',
242
- tool: '${server.toolFunction.name}',
243
- type: 'ipc-hosted'
244
- }));
245
- } else {
246
- res.writeHead(404, { 'Content-Type': 'application/json' });
247
- res.end(JSON.stringify({ error: 'Not found' }));
248
- }
249
- });
250
-
251
- // Start the server
252
- await server.connect(transport);
253
- httpServer.listen(${server.port}, () => {
254
- console.log(\`IPC MCP tool server '${server.toolFunction.name}' listening on port ${server.port}\`);
255
-
256
- // Notify parent that server is ready
257
- if (process.send) {
258
- process.send({
259
- type: 'server-ready',
260
- port: ${server.port},
261
- toolName: '${server.toolFunction.name}'
262
- });
263
- }
264
- });
265
-
266
- // Handle graceful shutdown
267
- process.on('SIGTERM', () => {
268
- console.log('Received SIGTERM, shutting down gracefully');
269
- httpServer.close(() => {
270
- console.log('Server stopped');
271
- process.exit(0);
272
- });
273
- });
274
-
275
- process.on('disconnect', () => {
276
- console.log('Parent process disconnected, shutting down');
277
- process.exit(0);
278
- });
279
- `;
280
- }
281
- async startIPCServer(server) {
282
- const toolId = this.getToolId(server.toolFunction.name);
283
- const serverDir = join(this.baseDir, toolId);
284
- const serverFile = server.serverFile;
285
- return new Promise((resolve, reject) => {
286
- // Spawn child process with IPC enabled
287
- const childProcess = spawn('node', [serverFile], {
288
- cwd: serverDir,
289
- stdio: ['ignore', 'pipe', 'pipe', 'ipc'], // IPC channel is crucial
290
- detached: false,
291
- });
292
- server.process = childProcess;
293
- server.pid = childProcess.pid;
294
- // Handle IPC messages from child process
295
- childProcess.on('message', (message) => {
296
- this.handleIPCMessage(message, toolId, childProcess);
297
- });
298
- childProcess.stdout?.on('data', (data) => {
299
- logger.info({ toolId }, `IPC tool server stdout: ${data.toString().trim()}`);
300
- });
301
- childProcess.stderr?.on('data', (data) => {
302
- logger.error({ toolId }, `IPC tool server stderr: ${data.toString().trim()}`);
303
- });
304
- childProcess.on('error', (error) => {
305
- logger.error({ toolId, error: error.message }, 'Failed to start IPC tool server');
306
- reject(error);
307
- });
308
- childProcess.on('exit', (code, signal) => {
309
- logger.info({ toolId, code, signal }, 'IPC tool server process exited');
310
- server.status = 'stopped';
311
- server.process = undefined;
312
- server.pid = undefined;
313
- // Clean up any pending requests for this tool
314
- this.cleanupPendingRequests(toolId);
315
- });
316
- // Give the process a moment to start
317
- setTimeout(() => {
318
- if (childProcess.pid) {
319
- resolve();
320
- }
321
- else {
322
- reject(new Error('Failed to start IPC server process'));
323
- }
324
- }, 1000);
325
- });
326
- }
327
- handleIPCMessage(message, toolId, childProcess) {
328
- switch (message.type) {
329
- case 'execute-function':
330
- this.handleFunctionExecution(message, childProcess);
331
- break;
332
- case 'server-ready':
333
- logger.info({ toolId, port: message.port }, 'IPC tool server reported ready');
334
- break;
335
- case 'error':
336
- logger.error({ toolId, error: message.message }, 'IPC tool server error');
337
- break;
338
- default:
339
- logger.warn({ toolId, messageType: message.type }, 'Unknown IPC message type');
340
- }
341
- }
342
- async handleFunctionExecution(message, childProcess) {
343
- const { requestId, toolName, params } = message;
344
- const toolId = this.getToolId(toolName);
345
- const toolFunction = this.toolFunctions.get(toolId);
346
- if (!toolFunction) {
347
- childProcess.send({
348
- type: 'function-result',
349
- requestId,
350
- error: `Tool function not found: ${toolName}`,
351
- });
352
- return;
353
- }
354
- try {
355
- logger.debug({ toolId, requestId, params }, 'Executing tool function in parent process');
356
- // Execute the ACTUAL function object (NO SERIALIZATION!)
357
- const result = await toolFunction.execute(params);
358
- childProcess.send({
359
- type: 'function-result',
360
- requestId,
361
- result,
362
- });
363
- }
364
- catch (error) {
365
- logger.error({
366
- toolId,
367
- requestId,
368
- error: error instanceof Error ? error.message : 'Unknown error',
369
- }, 'Tool function execution failed');
370
- childProcess.send({
371
- type: 'function-result',
372
- requestId,
373
- error: error instanceof Error ? error.message : 'Unknown error',
374
- });
375
- }
376
- }
377
- cleanupPendingRequests(toolId) {
378
- // Clean up any pending requests for this tool
379
- for (const [requestId, pending] of this.pendingRequests.entries()) {
380
- if (requestId.includes(toolId)) {
381
- clearTimeout(pending.timeout);
382
- pending.reject(new Error('Tool server stopped'));
383
- this.pendingRequests.delete(requestId);
384
- }
385
- }
386
- }
387
- async waitForServerReady(server, maxRetries = 10) {
388
- for (let i = 0; i < maxRetries; i++) {
389
- try {
390
- const response = await fetch(`http://localhost:${server.port}/health`);
391
- if (response.ok) {
392
- const healthData = await response.json();
393
- if (healthData.type === 'ipc-hosted') {
394
- logger.info({ toolId: this.getToolId(server.toolFunction.name) }, 'IPC server health check passed');
395
- return;
396
- }
397
- }
398
- }
399
- catch (error) {
400
- // Server not ready yet
401
- }
402
- await new Promise((resolve) => setTimeout(resolve, 500));
403
- }
404
- throw new Error(`IPC server failed to become ready after ${maxRetries} attempts`);
405
- }
406
- }
407
- // Singleton instance
408
- export const ipcHostedToolManager = new IPCHostedToolManager();
409
- //# sourceMappingURL=ipc-hosted-tool-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ipc-hosted-tool-manager.js","sourceRoot":"","sources":["../src/ipc-hosted-tool-manager.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import { type ChildProcess } from 'node:child_process';
2
- export interface InlineToolFunction {
3
- name: string;
4
- description?: string;
5
- execute: (params: any) => Promise<any>;
6
- parameters?: Record<string, any>;
7
- }
8
- export interface ModuleHostedToolServer {
9
- toolFunction: InlineToolFunction;
10
- process?: ChildProcess;
11
- port: number;
12
- serverUrl: string;
13
- status: 'starting' | 'running' | 'stopped' | 'error';
14
- pid?: number;
15
- moduleFile: string;
16
- }
17
- export declare class ModuleHostedToolManager {
18
- private servers;
19
- private portCounter;
20
- private readonly baseDir;
21
- private toolModules;
22
- constructor();
23
- deployInlineTool(toolFunction: InlineToolFunction): Promise<ModuleHostedToolServer>;
24
- stopTool(toolName: string): Promise<void>;
25
- getServer(toolName: string): ModuleHostedToolServer | undefined;
26
- getAllServers(): ModuleHostedToolServer[];
27
- private getToolId;
28
- private getNextPort;
29
- private generateModuleFiles;
30
- private createToolModule;
31
- private createMCPServerCode;
32
- private startServer;
33
- private handleFunctionExecution;
34
- private waitForServerReady;
35
- }
36
- export declare const moduleHostedToolManager: ModuleHostedToolManager;
37
- //# sourceMappingURL=module-hosted-tool-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"module-hosted-tool-manager.d.ts","sourceRoot":"","sources":["../src/module-hosted-tool-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,oBAAoB,CAAC;AAO9D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,kBAAkB,CAAC;IACjC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,WAAW,CAAyC;;IAStD,gBAAgB,CAAC,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAiDnF,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B/C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS;IAK/D,aAAa,IAAI,sBAAsB,EAAE;IAIzC,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,WAAW;YAIL,mBAAmB;IAqCjC,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,mBAAmB;YA2Ib,WAAW;YAwDX,uBAAuB;YA6BvB,kBAAkB;CAoBjC;AAGD,eAAO,MAAM,uBAAuB,yBAAgC,CAAC"}