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() }];
}
}
|