@inkeep/agents-sdk 0.1.1 → 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.
- package/SUPPLEMENTAL_TERMS.md +40 -0
- package/dist/index.cjs +2863 -0
- package/dist/index.d.cts +919 -0
- package/dist/index.d.ts +919 -11
- package/dist/index.js +2840 -10
- package/package.json +7 -6
- package/dist/__tests__/utils/testTenant.d.ts +0 -7
- package/dist/__tests__/utils/testTenant.d.ts.map +0 -1
- package/dist/__tests__/utils/testTenant.js +0 -10
- package/dist/__tests__/utils/testTenant.js.map +0 -1
- package/dist/agent.d.ts +0 -47
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -601
- package/dist/agent.js.map +0 -1
- package/dist/artifact-component.d.ts +0 -27
- package/dist/artifact-component.d.ts.map +0 -1
- package/dist/artifact-component.js +0 -116
- package/dist/artifact-component.js.map +0 -1
- package/dist/builders.d.ts +0 -211
- package/dist/builders.d.ts.map +0 -1
- package/dist/builders.js +0 -244
- package/dist/builders.js.map +0 -1
- package/dist/data-component.d.ts +0 -25
- package/dist/data-component.d.ts.map +0 -1
- package/dist/data-component.js +0 -112
- package/dist/data-component.js.map +0 -1
- package/dist/environment-settings.d.ts +0 -28
- package/dist/environment-settings.d.ts.map +0 -1
- package/dist/environment-settings.js +0 -78
- package/dist/environment-settings.js.map +0 -1
- package/dist/externalAgent.d.ts +0 -58
- package/dist/externalAgent.d.ts.map +0 -1
- package/dist/externalAgent.js +0 -161
- package/dist/externalAgent.js.map +0 -1
- package/dist/graph.d.ts +0 -200
- package/dist/graph.d.ts.map +0 -1
- package/dist/graph.js +0 -1294
- package/dist/graph.js.map +0 -1
- package/dist/graphFullClient.d.ts +0 -22
- package/dist/graphFullClient.d.ts.map +0 -1
- package/dist/graphFullClient.js +0 -189
- package/dist/graphFullClient.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/module-hosted-tool-manager.d.ts +0 -37
- package/dist/module-hosted-tool-manager.d.ts.map +0 -1
- package/dist/module-hosted-tool-manager.js +0 -375
- package/dist/module-hosted-tool-manager.js.map +0 -1
- package/dist/runner.d.ts +0 -38
- package/dist/runner.d.ts.map +0 -1
- package/dist/runner.js +0 -164
- package/dist/runner.js.map +0 -1
- package/dist/tool.d.ts +0 -29
- package/dist/tool.d.ts.map +0 -1
- package/dist/tool.js +0 -122
- package/dist/tool.js.map +0 -1
- package/dist/types.d.ts +0 -285
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -37
- package/dist/types.js.map +0 -1
|
@@ -1,375 +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('module-hosted-tool-manager');
|
|
6
|
-
export class ModuleHostedToolManager {
|
|
7
|
-
servers = new Map();
|
|
8
|
-
portCounter = 3011;
|
|
9
|
-
baseDir;
|
|
10
|
-
toolModules = new Map();
|
|
11
|
-
constructor() {
|
|
12
|
-
this.baseDir = join(process.cwd(), '.hosted-tools');
|
|
13
|
-
if (!existsSync(this.baseDir)) {
|
|
14
|
-
mkdirSync(this.baseDir, { recursive: true });
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
async deployInlineTool(toolFunction) {
|
|
18
|
-
const toolId = this.getToolId(toolFunction.name);
|
|
19
|
-
// Check if tool is already deployed
|
|
20
|
-
if (this.servers.has(toolId)) {
|
|
21
|
-
const existingServer = this.servers.get(toolId);
|
|
22
|
-
if (existingServer.status === 'running') {
|
|
23
|
-
logger.info({ toolId }, 'Inline tool already deployed and running');
|
|
24
|
-
return existingServer;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
const port = this.getNextPort();
|
|
28
|
-
const serverUrl = `http://localhost:${port}/mcp`;
|
|
29
|
-
// Store the tool function in our registry
|
|
30
|
-
this.toolModules.set(toolId, toolFunction);
|
|
31
|
-
const server = {
|
|
32
|
-
toolFunction,
|
|
33
|
-
port,
|
|
34
|
-
serverUrl,
|
|
35
|
-
status: 'starting',
|
|
36
|
-
moduleFile: '',
|
|
37
|
-
};
|
|
38
|
-
this.servers.set(toolId, server);
|
|
39
|
-
try {
|
|
40
|
-
await this.generateModuleFiles(server);
|
|
41
|
-
await this.startServer(server);
|
|
42
|
-
// Wait for server to be ready
|
|
43
|
-
await this.waitForServerReady(server);
|
|
44
|
-
server.status = 'running';
|
|
45
|
-
logger.info({ toolId, port, serverUrl }, 'Inline tool deployed successfully');
|
|
46
|
-
return server;
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
server.status = 'error';
|
|
50
|
-
logger.error({ toolId, error: error instanceof Error ? error.message : 'Unknown error' }, 'Failed to deploy inline tool');
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
async stopTool(toolName) {
|
|
55
|
-
const toolId = this.getToolId(toolName);
|
|
56
|
-
const server = this.servers.get(toolId);
|
|
57
|
-
if (!server || !server.process) {
|
|
58
|
-
logger.warn({ toolId }, 'Inline tool not found or not running');
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
return new Promise((resolve) => {
|
|
62
|
-
server.process.on('exit', () => {
|
|
63
|
-
server.status = 'stopped';
|
|
64
|
-
server.process = undefined;
|
|
65
|
-
server.pid = undefined;
|
|
66
|
-
// Clean up the module registry
|
|
67
|
-
this.toolModules.delete(toolId);
|
|
68
|
-
logger.info({ toolId }, 'Inline tool stopped successfully');
|
|
69
|
-
resolve();
|
|
70
|
-
});
|
|
71
|
-
server.process.kill('SIGTERM');
|
|
72
|
-
// Force kill after 5 seconds
|
|
73
|
-
setTimeout(() => {
|
|
74
|
-
if (server.process && !server.process.killed) {
|
|
75
|
-
server.process.kill('SIGKILL');
|
|
76
|
-
}
|
|
77
|
-
}, 5000);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
getServer(toolName) {
|
|
81
|
-
const toolId = this.getToolId(toolName);
|
|
82
|
-
return this.servers.get(toolId);
|
|
83
|
-
}
|
|
84
|
-
getAllServers() {
|
|
85
|
-
return Array.from(this.servers.values());
|
|
86
|
-
}
|
|
87
|
-
getToolId(name) {
|
|
88
|
-
return name
|
|
89
|
-
.toLowerCase()
|
|
90
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
91
|
-
.replace(/^-+|-+$/g, '');
|
|
92
|
-
}
|
|
93
|
-
getNextPort() {
|
|
94
|
-
return this.portCounter++;
|
|
95
|
-
}
|
|
96
|
-
async generateModuleFiles(server) {
|
|
97
|
-
const toolId = this.getToolId(server.toolFunction.name);
|
|
98
|
-
const serverDir = join(this.baseDir, toolId);
|
|
99
|
-
if (!existsSync(serverDir)) {
|
|
100
|
-
mkdirSync(serverDir, { recursive: true });
|
|
101
|
-
}
|
|
102
|
-
// Create a separate module file for the tool function
|
|
103
|
-
const toolModuleFile = join(serverDir, 'tool-function.mjs');
|
|
104
|
-
const toolModuleCode = this.createToolModule(server.toolFunction);
|
|
105
|
-
writeFileSync(toolModuleFile, toolModuleCode, 'utf8');
|
|
106
|
-
// Create the MCP server file that imports the tool module
|
|
107
|
-
const serverFile = join(serverDir, 'server.mjs');
|
|
108
|
-
const serverCode = this.createMCPServerCode(server, toolId);
|
|
109
|
-
writeFileSync(serverFile, serverCode, 'utf8');
|
|
110
|
-
server.moduleFile = serverFile;
|
|
111
|
-
// Create package.json for the tool server
|
|
112
|
-
const packageJson = {
|
|
113
|
-
name: `hosted-tool-${toolId}`,
|
|
114
|
-
version: '1.0.0',
|
|
115
|
-
type: 'module',
|
|
116
|
-
main: 'server.mjs',
|
|
117
|
-
dependencies: {
|
|
118
|
-
'@modelcontextprotocol/sdk': '^1.12.1',
|
|
119
|
-
zod: '^3.25.31',
|
|
120
|
-
},
|
|
121
|
-
};
|
|
122
|
-
writeFileSync(join(serverDir, 'package.json'), JSON.stringify(packageJson, null, 2), 'utf8');
|
|
123
|
-
logger.info({ toolId, serverFile, toolModuleFile }, 'Generated module-based MCP server code');
|
|
124
|
-
}
|
|
125
|
-
createToolModule(toolFunction) {
|
|
126
|
-
// Extract the function body without serializing to string
|
|
127
|
-
// We'll use a different approach - create a module that exports the function
|
|
128
|
-
return `// Auto-generated tool function module
|
|
129
|
-
export const toolName = '${toolFunction.name}';
|
|
130
|
-
export const toolDescription = '${toolFunction.description || ''}';
|
|
131
|
-
|
|
132
|
-
// Re-export the tool function
|
|
133
|
-
// Note: This approach requires the function to be passed through a registry
|
|
134
|
-
export async function execute(params) {
|
|
135
|
-
// This will be resolved at runtime through the parent process communication
|
|
136
|
-
const result = await parentProcessExecute(params);
|
|
137
|
-
return result;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Parameters schema (if provided)
|
|
141
|
-
export const parameters = ${toolFunction.parameters ? JSON.stringify(toolFunction.parameters, null, 2) : 'undefined'};
|
|
142
|
-
`;
|
|
143
|
-
}
|
|
144
|
-
createMCPServerCode(server, toolId) {
|
|
145
|
-
return `#!/usr/bin/env node
|
|
146
|
-
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp';
|
|
147
|
-
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp';
|
|
148
|
-
import { z } from 'zod';
|
|
149
|
-
import { createServer } from 'node:http';
|
|
150
|
-
|
|
151
|
-
const server = new McpServer({
|
|
152
|
-
name: '${server.toolFunction.name}',
|
|
153
|
-
version: '1.0.0',
|
|
154
|
-
}, { capabilities: { logging: {} } });
|
|
155
|
-
|
|
156
|
-
// Parameter schema
|
|
157
|
-
const parameterSchema = z.object({${server.toolFunction.parameters
|
|
158
|
-
? Object.keys(server.toolFunction.parameters)
|
|
159
|
-
.map((key) => `\n ${key}: z.any()`)
|
|
160
|
-
.join(',') + '\n'
|
|
161
|
-
: ''}});
|
|
162
|
-
|
|
163
|
-
// Communication with parent process for function execution
|
|
164
|
-
let parentProcess = null;
|
|
165
|
-
|
|
166
|
-
// Set up IPC communication
|
|
167
|
-
process.on('message', (message) => {
|
|
168
|
-
if (message.type === 'function-result') {
|
|
169
|
-
// Handle function execution result
|
|
170
|
-
const { requestId, result, error } = message;
|
|
171
|
-
// Resolve the pending promise (this would need a proper promise registry)
|
|
172
|
-
handleFunctionResult(requestId, result, error);
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
const pendingRequests = new Map();
|
|
177
|
-
let requestIdCounter = 0;
|
|
178
|
-
|
|
179
|
-
async function executeToolFunction(params) {
|
|
180
|
-
return new Promise((resolve, reject) => {
|
|
181
|
-
const requestId = ++requestIdCounter;
|
|
182
|
-
pendingRequests.set(requestId, { resolve, reject });
|
|
183
|
-
|
|
184
|
-
// Send execution request to parent process
|
|
185
|
-
process.send({
|
|
186
|
-
type: 'execute-function',
|
|
187
|
-
requestId,
|
|
188
|
-
toolName: '${server.toolFunction.name}',
|
|
189
|
-
params
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
// Timeout after 30 seconds
|
|
193
|
-
setTimeout(() => {
|
|
194
|
-
if (pendingRequests.has(requestId)) {
|
|
195
|
-
pendingRequests.delete(requestId);
|
|
196
|
-
reject(new Error('Function execution timeout'));
|
|
197
|
-
}
|
|
198
|
-
}, 30000);
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
function handleFunctionResult(requestId, result, error) {
|
|
203
|
-
const pending = pendingRequests.get(requestId);
|
|
204
|
-
if (pending) {
|
|
205
|
-
pendingRequests.delete(requestId);
|
|
206
|
-
if (error) {
|
|
207
|
-
pending.reject(new Error(error));
|
|
208
|
-
} else {
|
|
209
|
-
pending.resolve(result);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
// Register the tool
|
|
215
|
-
server.tool('${toolId}', '${server.toolFunction.description || ''}', parameterSchema.shape, async (params) => {
|
|
216
|
-
try {
|
|
217
|
-
const result = await executeToolFunction(params);
|
|
218
|
-
return {
|
|
219
|
-
content: [{
|
|
220
|
-
type: 'text',
|
|
221
|
-
text: typeof result === 'string' ? result : JSON.stringify(result)
|
|
222
|
-
}]
|
|
223
|
-
};
|
|
224
|
-
} catch (error) {
|
|
225
|
-
return {
|
|
226
|
-
content: [{
|
|
227
|
-
type: 'text',
|
|
228
|
-
text: \`Error executing tool: \${error instanceof Error ? error.message : 'Unknown error'}\`
|
|
229
|
-
}],
|
|
230
|
-
isError: true
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
// Create HTTP server
|
|
236
|
-
const httpServer = createServer();
|
|
237
|
-
const transport = new StreamableHTTPServerTransport({});
|
|
238
|
-
|
|
239
|
-
httpServer.on('request', async (req, res) => {
|
|
240
|
-
if (req.url === '/mcp' && req.method === 'POST') {
|
|
241
|
-
let body = '';
|
|
242
|
-
req.on('data', chunk => body += chunk);
|
|
243
|
-
req.on('end', async () => {
|
|
244
|
-
try {
|
|
245
|
-
const jsonBody = JSON.parse(body);
|
|
246
|
-
await transport.handleRequest(req, res, jsonBody);
|
|
247
|
-
} catch (error) {
|
|
248
|
-
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
249
|
-
res.end(JSON.stringify({ error: 'Invalid JSON' }));
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
} else if (req.url === '/health' && req.method === 'GET') {
|
|
253
|
-
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
254
|
-
res.end(JSON.stringify({ status: 'healthy', tool: '${server.toolFunction.name}' }));
|
|
255
|
-
} else {
|
|
256
|
-
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
257
|
-
res.end(JSON.stringify({ error: 'Not found' }));
|
|
258
|
-
}
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
// Start the server
|
|
262
|
-
await server.connect(transport);
|
|
263
|
-
httpServer.listen(${server.port}, () => {
|
|
264
|
-
console.log(\`MCP tool server '${server.toolFunction.name}' listening on port ${server.port}\`);
|
|
265
|
-
|
|
266
|
-
// Notify parent that server is ready
|
|
267
|
-
if (process.send) {
|
|
268
|
-
process.send({ type: 'server-ready' });
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
|
|
272
|
-
process.on('SIGTERM', () => {
|
|
273
|
-
httpServer.close(() => {
|
|
274
|
-
console.log('Server stopped');
|
|
275
|
-
process.exit(0);
|
|
276
|
-
});
|
|
277
|
-
});
|
|
278
|
-
`;
|
|
279
|
-
}
|
|
280
|
-
async startServer(server) {
|
|
281
|
-
const toolId = this.getToolId(server.toolFunction.name);
|
|
282
|
-
const serverDir = join(this.baseDir, toolId);
|
|
283
|
-
const serverFile = server.moduleFile;
|
|
284
|
-
return new Promise((resolve, reject) => {
|
|
285
|
-
const childProcess = spawn('node', [serverFile], {
|
|
286
|
-
cwd: serverDir,
|
|
287
|
-
stdio: ['ignore', 'pipe', 'pipe', 'ipc'], // Enable IPC
|
|
288
|
-
detached: false,
|
|
289
|
-
});
|
|
290
|
-
server.process = childProcess;
|
|
291
|
-
server.pid = childProcess.pid;
|
|
292
|
-
// Handle IPC messages from child process
|
|
293
|
-
childProcess.on('message', (message) => {
|
|
294
|
-
if (message.type === 'execute-function') {
|
|
295
|
-
// Execute the function in the parent process context
|
|
296
|
-
this.handleFunctionExecution(message, childProcess);
|
|
297
|
-
}
|
|
298
|
-
else if (message.type === 'server-ready') {
|
|
299
|
-
logger.info({ toolId }, 'Tool server reported ready via IPC');
|
|
300
|
-
}
|
|
301
|
-
});
|
|
302
|
-
childProcess.stdout?.on('data', (data) => {
|
|
303
|
-
logger.info({ toolId }, `Tool server stdout: ${data.toString().trim()}`);
|
|
304
|
-
});
|
|
305
|
-
childProcess.stderr?.on('data', (data) => {
|
|
306
|
-
logger.error({ toolId }, `Tool server stderr: ${data.toString().trim()}`);
|
|
307
|
-
});
|
|
308
|
-
childProcess.on('error', (error) => {
|
|
309
|
-
logger.error({ toolId, error: error.message }, 'Failed to start tool server');
|
|
310
|
-
reject(error);
|
|
311
|
-
});
|
|
312
|
-
childProcess.on('exit', (code, signal) => {
|
|
313
|
-
logger.info({ toolId, code, signal }, 'Tool server process exited');
|
|
314
|
-
server.status = 'stopped';
|
|
315
|
-
server.process = undefined;
|
|
316
|
-
server.pid = undefined;
|
|
317
|
-
});
|
|
318
|
-
// Give the process a moment to start
|
|
319
|
-
setTimeout(() => {
|
|
320
|
-
if (childProcess.pid) {
|
|
321
|
-
resolve();
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
reject(new Error('Failed to start server process'));
|
|
325
|
-
}
|
|
326
|
-
}, 1000);
|
|
327
|
-
});
|
|
328
|
-
}
|
|
329
|
-
async handleFunctionExecution(message, childProcess) {
|
|
330
|
-
const { requestId, toolName, params } = message;
|
|
331
|
-
const toolFunction = this.toolModules.get(this.getToolId(toolName));
|
|
332
|
-
if (!toolFunction) {
|
|
333
|
-
childProcess.send({
|
|
334
|
-
type: 'function-result',
|
|
335
|
-
requestId,
|
|
336
|
-
error: `Tool function not found: ${toolName}`,
|
|
337
|
-
});
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
try {
|
|
341
|
-
const result = await toolFunction.execute(params);
|
|
342
|
-
childProcess.send({
|
|
343
|
-
type: 'function-result',
|
|
344
|
-
requestId,
|
|
345
|
-
result,
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
catch (error) {
|
|
349
|
-
childProcess.send({
|
|
350
|
-
type: 'function-result',
|
|
351
|
-
requestId,
|
|
352
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
async waitForServerReady(server, maxRetries = 10) {
|
|
357
|
-
for (let i = 0; i < maxRetries; i++) {
|
|
358
|
-
try {
|
|
359
|
-
const response = await fetch(`http://localhost:${server.port}/health`);
|
|
360
|
-
if (response.ok) {
|
|
361
|
-
logger.info({ toolId: this.getToolId(server.toolFunction.name) }, 'Server health check passed');
|
|
362
|
-
return;
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
catch (error) {
|
|
366
|
-
// Server not ready yet
|
|
367
|
-
}
|
|
368
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
369
|
-
}
|
|
370
|
-
throw new Error(`Server failed to become ready after ${maxRetries} attempts`);
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
// Singleton instance
|
|
374
|
-
export const moduleHostedToolManager = new ModuleHostedToolManager();
|
|
375
|
-
//# sourceMappingURL=module-hosted-tool-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"module-hosted-tool-manager.js","sourceRoot":"","sources":["../src/module-hosted-tool-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { GenerateOptions, GraphInterface, MessageInput, RunResult, StreamResponse } from './types';
|
|
2
|
-
export declare class Runner {
|
|
3
|
-
/**
|
|
4
|
-
* Run a graph until completion, handling transfers and tool calls
|
|
5
|
-
* Similar to OpenAI's Runner.run() pattern
|
|
6
|
-
* NOTE: This now requires a graph instead of an agent
|
|
7
|
-
*/
|
|
8
|
-
static run(graph: GraphInterface, messages: MessageInput, options?: GenerateOptions): Promise<RunResult>;
|
|
9
|
-
/**
|
|
10
|
-
* Stream a graph's response
|
|
11
|
-
*/
|
|
12
|
-
static stream(graph: GraphInterface, messages: MessageInput, options?: GenerateOptions): Promise<StreamResponse>;
|
|
13
|
-
/**
|
|
14
|
-
* Execute multiple graphs in parallel and return the first successful result
|
|
15
|
-
*/
|
|
16
|
-
static raceGraphs(graphs: GraphInterface[], messages: MessageInput, options?: GenerateOptions): Promise<RunResult>;
|
|
17
|
-
private static normalizeToMessageHistory;
|
|
18
|
-
/**
|
|
19
|
-
* Validate graph configuration before running
|
|
20
|
-
*/
|
|
21
|
-
static validateGraph(graph: GraphInterface): {
|
|
22
|
-
valid: boolean;
|
|
23
|
-
errors: string[];
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Get execution statistics for a graph
|
|
27
|
-
*/
|
|
28
|
-
static getExecutionStats(graph: GraphInterface, messages: MessageInput, options?: GenerateOptions): Promise<{
|
|
29
|
-
estimatedTurns: number;
|
|
30
|
-
estimatedTokens: number;
|
|
31
|
-
agentCount: number;
|
|
32
|
-
defaultAgent: string | undefined;
|
|
33
|
-
}>;
|
|
34
|
-
}
|
|
35
|
-
export declare const run: typeof Runner.run;
|
|
36
|
-
export declare const stream: typeof Runner.stream;
|
|
37
|
-
export declare const raceGraphs: typeof Runner.raceGraphs;
|
|
38
|
-
//# sourceMappingURL=runner.d.ts.map
|
package/dist/runner.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,eAAe,EACf,cAAc,EAEd,YAAY,EACZ,SAAS,EACT,cAAc,EAEf,MAAM,SAAS,CAAC;AAKjB,qBAAa,MAAM;IACjB;;;;OAIG;WACU,GAAG,CACd,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,SAAS,CAAC;IAoErB;;OAEG;WACU,MAAM,CACjB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,cAAc,CAAC;IAa1B;;OAEG;WACU,UAAU,CACrB,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,SAAS,CAAC;IA2CrB,OAAO,CAAC,MAAM,CAAC,yBAAyB;IAYxC;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAqCjF;;OAEG;WACU,iBAAiB,CAC5B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC;QACT,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;KAClC,CAAC;CAYH;AAGD,eAAO,MAAM,GAAG,mBAA0B,CAAC;AAC3C,eAAO,MAAM,MAAM,sBAA6B,CAAC;AACjD,eAAO,MAAM,UAAU,0BAAiC,CAAC"}
|
package/dist/runner.js
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { getLogger } from '@inkeep/agents-core';
|
|
2
|
-
import { MaxTurnsExceededError } from './types';
|
|
3
|
-
const logger = getLogger('runner');
|
|
4
|
-
export class Runner {
|
|
5
|
-
/**
|
|
6
|
-
* Run a graph until completion, handling transfers and tool calls
|
|
7
|
-
* Similar to OpenAI's Runner.run() pattern
|
|
8
|
-
* NOTE: This now requires a graph instead of an agent
|
|
9
|
-
*/
|
|
10
|
-
static async run(graph, messages, options) {
|
|
11
|
-
const maxTurns = options?.maxTurns || 10;
|
|
12
|
-
let turnCount = 0;
|
|
13
|
-
const messageHistory = Runner.normalizeToMessageHistory(messages);
|
|
14
|
-
const allToolCalls = [];
|
|
15
|
-
const allTransfers = [];
|
|
16
|
-
logger.info({
|
|
17
|
-
graphId: graph.getId(),
|
|
18
|
-
defaultAgent: graph.getDefaultAgent()?.getName(),
|
|
19
|
-
maxTurns,
|
|
20
|
-
initialMessageCount: messageHistory.length,
|
|
21
|
-
}, 'Starting graph run');
|
|
22
|
-
while (turnCount < maxTurns) {
|
|
23
|
-
logger.debug({
|
|
24
|
-
graphId: graph.getId(),
|
|
25
|
-
turnCount,
|
|
26
|
-
messageHistoryLength: messageHistory.length,
|
|
27
|
-
}, 'Starting turn');
|
|
28
|
-
// Use graph.generate to handle agent orchestration
|
|
29
|
-
const response = await graph.generate(messageHistory, options);
|
|
30
|
-
turnCount++;
|
|
31
|
-
// Since graph.generate returns a string (the final response),
|
|
32
|
-
// we need to treat this as a completed generation
|
|
33
|
-
logger.info({
|
|
34
|
-
graphId: graph.getId(),
|
|
35
|
-
turnCount,
|
|
36
|
-
responseLength: response.length,
|
|
37
|
-
}, 'Graph generation completed');
|
|
38
|
-
// Return the result wrapped in RunResult format
|
|
39
|
-
return {
|
|
40
|
-
finalOutput: response,
|
|
41
|
-
agent: graph.getDefaultAgent() || {},
|
|
42
|
-
turnCount,
|
|
43
|
-
usage: { inputTokens: 0, outputTokens: 0 },
|
|
44
|
-
metadata: {
|
|
45
|
-
toolCalls: allToolCalls,
|
|
46
|
-
transfers: [], // Graph handles transfers internally
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
// Max turns exceeded
|
|
51
|
-
logger.error({
|
|
52
|
-
graphId: graph.getId(),
|
|
53
|
-
maxTurns,
|
|
54
|
-
finalTurnCount: turnCount,
|
|
55
|
-
}, 'Maximum turns exceeded');
|
|
56
|
-
throw new MaxTurnsExceededError(maxTurns);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Stream a graph's response
|
|
60
|
-
*/
|
|
61
|
-
static async stream(graph, messages, options) {
|
|
62
|
-
logger.info({
|
|
63
|
-
graphId: graph.getId(),
|
|
64
|
-
defaultAgent: graph.getDefaultAgent()?.getName(),
|
|
65
|
-
}, 'Starting graph stream');
|
|
66
|
-
// Delegate to graph's stream method
|
|
67
|
-
return graph.stream(messages, options);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Execute multiple graphs in parallel and return the first successful result
|
|
71
|
-
*/
|
|
72
|
-
static async raceGraphs(graphs, messages, options) {
|
|
73
|
-
if (graphs.length === 0) {
|
|
74
|
-
throw new Error('No graphs provided for race');
|
|
75
|
-
}
|
|
76
|
-
logger.info({
|
|
77
|
-
graphCount: graphs.length,
|
|
78
|
-
graphIds: graphs.map((g) => g.getId()),
|
|
79
|
-
}, 'Starting graph race');
|
|
80
|
-
const promises = graphs.map(async (graph, index) => {
|
|
81
|
-
try {
|
|
82
|
-
const result = await Runner.run(graph, messages, options);
|
|
83
|
-
return { ...result, raceIndex: index };
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
logger.error({
|
|
87
|
-
graphId: graph.getId(),
|
|
88
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
89
|
-
}, 'Graph failed in race');
|
|
90
|
-
throw error;
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
const result = await Promise.race(promises);
|
|
94
|
-
logger.info({
|
|
95
|
-
winningGraphId: result.graphId || 'unknown',
|
|
96
|
-
raceIndex: result.raceIndex,
|
|
97
|
-
}, 'Graph race completed');
|
|
98
|
-
return result;
|
|
99
|
-
}
|
|
100
|
-
// Private helper methods
|
|
101
|
-
static normalizeToMessageHistory(messages) {
|
|
102
|
-
if (typeof messages === 'string') {
|
|
103
|
-
return [{ role: 'user', content: messages }];
|
|
104
|
-
}
|
|
105
|
-
if (Array.isArray(messages)) {
|
|
106
|
-
return messages.map((msg) => typeof msg === 'string' ? { role: 'user', content: msg } : msg);
|
|
107
|
-
}
|
|
108
|
-
return [messages];
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Validate graph configuration before running
|
|
112
|
-
*/
|
|
113
|
-
static validateGraph(graph) {
|
|
114
|
-
const errors = [];
|
|
115
|
-
if (!graph.getId()) {
|
|
116
|
-
errors.push('Graph ID is required');
|
|
117
|
-
}
|
|
118
|
-
const defaultAgent = graph.getDefaultAgent();
|
|
119
|
-
if (!defaultAgent) {
|
|
120
|
-
errors.push('Default agent is required');
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
if (!defaultAgent.getName()) {
|
|
124
|
-
errors.push('Default agent name is required');
|
|
125
|
-
}
|
|
126
|
-
if (!defaultAgent.getInstructions()) {
|
|
127
|
-
errors.push('Default agent instructions are required');
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
// Validate all agents in the graph
|
|
131
|
-
const agents = graph.getAgents();
|
|
132
|
-
if (agents.length === 0) {
|
|
133
|
-
errors.push('Graph must contain at least one agent');
|
|
134
|
-
}
|
|
135
|
-
for (const agent of agents) {
|
|
136
|
-
if (!agent.getName()) {
|
|
137
|
-
errors.push(`Agent missing name`);
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
return {
|
|
141
|
-
valid: errors.length === 0,
|
|
142
|
-
errors,
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Get execution statistics for a graph
|
|
147
|
-
*/
|
|
148
|
-
static async getExecutionStats(graph, messages, options) {
|
|
149
|
-
const agents = graph.getAgents();
|
|
150
|
-
const defaultAgent = graph.getDefaultAgent();
|
|
151
|
-
const messageCount = Array.isArray(messages) ? messages.length : 1;
|
|
152
|
-
return {
|
|
153
|
-
estimatedTurns: Math.min(Math.max(messageCount, 1), options?.maxTurns || 10),
|
|
154
|
-
estimatedTokens: messageCount * 100, // Rough estimate
|
|
155
|
-
agentCount: agents.length,
|
|
156
|
-
defaultAgent: defaultAgent?.getName(),
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
// Export convenience functions that match OpenAI's pattern
|
|
161
|
-
export const run = Runner.run.bind(Runner);
|
|
162
|
-
export const stream = Runner.stream.bind(Runner);
|
|
163
|
-
export const raceGraphs = Runner.raceGraphs.bind(Runner);
|
|
164
|
-
//# sourceMappingURL=runner.js.map
|
package/dist/runner.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/tool.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import type { MCPToolConfig } from '@inkeep/agents-core';
|
|
2
|
-
export interface ToolInterface {
|
|
3
|
-
config: MCPToolConfig;
|
|
4
|
-
init(): Promise<void>;
|
|
5
|
-
getId(): string;
|
|
6
|
-
getName(): string;
|
|
7
|
-
getDescription(): string;
|
|
8
|
-
getServerUrl(): string;
|
|
9
|
-
getActiveTools(): string[] | undefined;
|
|
10
|
-
getCredentialReferenceId(): string | null | undefined;
|
|
11
|
-
}
|
|
12
|
-
export declare class Tool implements ToolInterface {
|
|
13
|
-
config: MCPToolConfig;
|
|
14
|
-
private baseURL;
|
|
15
|
-
private tenantId;
|
|
16
|
-
private initialized;
|
|
17
|
-
constructor(config: MCPToolConfig);
|
|
18
|
-
getId(): string;
|
|
19
|
-
getName(): string;
|
|
20
|
-
getDescription(): string;
|
|
21
|
-
getServerUrl(): string;
|
|
22
|
-
getActiveTools(): string[] | undefined;
|
|
23
|
-
getCredentialReferenceId(): string | null | undefined;
|
|
24
|
-
init(options?: {
|
|
25
|
-
skipDatabaseRegistration?: boolean;
|
|
26
|
-
}): Promise<void>;
|
|
27
|
-
private upsertTool;
|
|
28
|
-
}
|
|
29
|
-
//# sourceMappingURL=tool.d.ts.map
|
package/dist/tool.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,MAAM,CAAC;IAChB,OAAO,IAAI,MAAM,CAAC;IAClB,cAAc,IAAI,MAAM,CAAC;IACzB,YAAY,IAAI,MAAM,CAAC;IACvB,cAAc,IAAI,MAAM,EAAE,GAAG,SAAS,CAAC;IACvC,wBAAwB,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CACvD;AAED,qBAAa,IAAK,YAAW,aAAa;IACjC,MAAM,EAAE,aAAa,CAAC;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,aAAa;IAcjC,KAAK,IAAI,MAAM;IAIf,OAAO,IAAI,MAAM;IAIjB,cAAc,IAAI,MAAM;IAIxB,YAAY,IAAI,MAAM;IAItB,cAAc,IAAI,MAAM,EAAE,GAAG,SAAS;IAItC,wBAAwB,IAAI,MAAM,GAAG,IAAI,GAAG,SAAS;IAK/C,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,wBAAwB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YA8B7D,UAAU;CAoFzB"}
|