aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/chatbot/tools/CalculateTool.ts
blob: 77ab1b39b4447b0627b00adc4fdddb075376e133 (plain)
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
import { BaseTool } from './BaseTool';

export class CalculateTool extends BaseTool<{ expression: string }> {
    constructor() {
        super(
            'calculate',
            'Perform a calculation',
            {
                expression: {
                    type: 'string',
                    description: 'The mathematical expression to evaluate',
                    required: 'true',
                    max_inputs: '1',
                },
            },
            '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: { expression: string }): Promise<unknown> {
        // Note: Using eval() can be dangerous. Consider using a safer alternative.
        const result = eval(args.expression);
        return [{ type: 'text', text: result.toString() }];
    }
}