import { Observation } from '../types/types'; import { ParametersType } from './ToolTypes'; import { BaseTool } from './BaseTool'; const calculateToolParams = [ { name: 'expression', type: 'string', description: 'The mathematical expression to evaluate', required: true, }, ] as const; type CalculateToolParamsType = typeof calculateToolParams; export class CalculateTool extends BaseTool { constructor() { super( 'calculate', 'Perform a calculation', calculateToolParams, // Use the reusable param config here 'Provide a mathematical expression to calculate that would work with JavaScript eval().', 'Runs a calculation and returns the number - uses JavaScript so be sure to use floating point syntax if necessary' ); } async execute(args: ParametersType): Promise { // TypeScript will ensure 'args.expression' is a string based on the param config const result = eval(args.expression); // Be cautious with eval(), as it can be dangerous. Consider using a safer alternative. return [{ type: 'text', text: result.toString() }]; } }