diff options
Diffstat (limited to 'src/client/views/nodes/chatbot/tools/CreateCSVTool.ts')
-rw-r--r-- | src/client/views/nodes/chatbot/tools/CreateCSVTool.ts | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/src/client/views/nodes/chatbot/tools/CreateCSVTool.ts b/src/client/views/nodes/chatbot/tools/CreateCSVTool.ts index d3ded0de0..b321d98ba 100644 --- a/src/client/views/nodes/chatbot/tools/CreateCSVTool.ts +++ b/src/client/views/nodes/chatbot/tools/CreateCSVTool.ts @@ -1,40 +1,47 @@ import { BaseTool } from './BaseTool'; import { Networking } from '../../../../Network'; +import { Observation } from '../types/types'; +import { ParametersType } from './ToolTypes'; -export class CreateCSVTool extends BaseTool<{ csvData: string; filename: string }> { +const createCSVToolParams = [ + { + name: 'csvData', + type: 'string', + description: 'A string of comma-separated values representing the CSV data.', + required: true, + }, + { + name: 'filename', + type: 'string', + description: 'The base name of the CSV file to be created. Should end in ".csv".', + required: true, + }, +] as const; + +type CreateCSVToolParamsType = typeof createCSVToolParams; + +export class CreateCSVTool extends BaseTool<CreateCSVToolParamsType> { private _handleCSVResult: (url: string, filename: string, id: string, data: string) => void; constructor(handleCSVResult: (url: string, title: string, id: string, data: string) => void) { super( 'createCSV', 'Creates a CSV file from raw CSV data and saves it to the server', - { - type: 'object', - properties: { - csvData: { - type: 'string', - description: 'A string of comma-separated values representing the CSV data.', - }, - filename: { - type: 'string', - description: 'The base name of the CSV file to be created. Should end in ".csv".', - }, - }, - required: ['csvData', 'filename'], - }, + createCSVToolParams, 'Provide a CSV string and a filename to create a CSV file.', 'Creates a CSV file from the provided CSV string and saves it to the server with a unique identifier, returning the file URL and UUID.' ); this._handleCSVResult = handleCSVResult; } - async execute(args: { csvData: string; filename: string }): Promise<unknown> { + async execute(args: ParametersType<CreateCSVToolParamsType>): Promise<Observation[]> { try { console.log('Creating CSV file:', args.filename, ' with data:', args.csvData); - // Post the raw CSV data to the createCSV endpoint on the server - const { fileUrl, id } = await Networking.PostToServer('/createCSV', { filename: args.filename, data: args.csvData }); + const { fileUrl, id } = await Networking.PostToServer('/createCSV', { + filename: args.filename, + data: args.csvData, + }); - // Handle the result by invoking the callback this._handleCSVResult(fileUrl, args.filename, id, args.csvData); return [ |