rojects/source/server/rojos/tools/RojoToolRegistry.ts

35 lines
1.0 KiB
TypeScript

import { RojoTool, RojoToolContext } from "./RojoTool.js";
import { ReadPathMetaTool } from "./ReadPathMetaTool.js";
import { GetTextContentTool } from "./GetTextContentTool.js";
import { WriteTextContentTool } from "./WriteTextContentTool.js";
import { ListFilesTool } from "./ListFilesTool.js";
import { CreateDirectoryTool } from "./CreateDirectoryTool.js";
export class RojoToolRegistry
{
static readonly All: RojoTool[] =
[
new ReadPathMetaTool(),
new GetTextContentTool(),
new WriteTextContentTool(),
new ListFilesTool(),
new CreateDirectoryTool(),
];
static definitions(): object[]
{
return RojoToolRegistry.All.map( t => t.Definition );
}
static async execute( name: string, args: Record<string, unknown>, ctx: RojoToolContext ): Promise<unknown>
{
const tool = RojoToolRegistry.All.find(
t => ( t.Definition as any ).function?.name === name
);
if ( !tool ) return { error: `Unknown tool: ${ name }` };
return tool.execute( args, ctx );
}
}