Spaces:
Paused
Paused
File size: 1,927 Bytes
529090e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | /**
* Tool Registry - The Nervous System
*
* Central registry that connects all system tools to the brain.
* This keeps index.ts clean and makes it easy to add new capabilities.
*
* Each tool represents a capability the system can invoke.
*/
import {
harvestFetchHandler,
harvestListHandler,
harvestReadHandler,
harvestToolDefinitions
} from '../mcp/tools/harvestTool.js';
export interface ToolDefinition {
name: string;
description: string;
inputSchema: {
type: string;
properties: Record<string, any>;
required?: string[];
};
handler: (payload: any, ctx: any) => Promise<any>;
}
/**
* All system tools - the capabilities available to agents
*/
const systemTools: ToolDefinition[] = [
// The Harvester - Knowledge Acquisition
{
...harvestToolDefinitions[0], // harvest.fetch
handler: harvestFetchHandler
},
{
...harvestToolDefinitions[1], // harvest.list
handler: harvestListHandler
},
{
...harvestToolDefinitions[2], // harvest.read
handler: harvestReadHandler
}
];
/**
* Get all system tools for agent registration
*/
export function getSystemTools(): ToolDefinition[] {
return systemTools;
}
/**
* Get a specific tool by name
*/
export function getTool(name: string): ToolDefinition | undefined {
return systemTools.find(t => t.name === name);
}
/**
* Register tools with MCP registry
*/
export async function registerSystemTools(mcpRegistry: any): Promise<void> {
for (const tool of systemTools) {
mcpRegistry.registerTool(tool.name, tool.handler);
}
console.log(`🔧 System Tools registered: ${systemTools.map(t => t.name).join(', ')}`);
}
/**
* Get tool definitions for agent context (without handlers)
*/
export function getToolDefinitionsForAgent(): Array<Omit<ToolDefinition, 'handler'>> {
return systemTools.map(({ name, description, inputSchema }) => ({
name,
description,
inputSchema
}));
}
|