blob: ca7223803127bda763e0ff51cfdacf2c8ef9ce04 (
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
27
28
29
30
31
32
33
 | import { Observation } from '../types/types';
import { ParametersType, ToolInfo } from '../types/tool_types';
import { BaseTool } from './BaseTool';
const calculateToolParams = [
    {
        name: 'expression',
        type: 'string',
        description: 'The mathematical expression to evaluate',
        required: true,
    },
] as const;
type CalculateToolParamsType = typeof calculateToolParams;
const calculateToolInfo: ToolInfo<CalculateToolParamsType> = {
    name: 'calculate',
    citationRules: 'No citation needed.',
    parameterRules: calculateToolParams,
    description: 'Runs a calculation and returns the number - uses JavaScript so be sure to use floating point syntax if necessary',
};
export class CalculateTool extends BaseTool<CalculateToolParamsType> {
    constructor() {
        super(calculateToolInfo);
    }
    async execute(args: ParametersType<CalculateToolParamsType>): Promise<Observation[]> {
        // 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() }];
    }
}
 |