import { parsedDoc } from '../chatboxcomponents/ChatBox'; import { ParametersType, ToolInfo } from '../types/tool_types'; import { Observation } from '../types/types'; import { BaseTool } from './BaseTool'; const createTextDocToolParams = [ { name: 'text_content', type: 'string', description: 'The text content that the document will display', required: true, }, { name: 'title', type: 'string', description: 'The title of the document', required: true, }, // { // name: 'background_color', // type: 'string', // description: 'The background color of the document as a hex string', // required: false, // }, // { // name: 'font_color', // type: 'string', // description: 'The font color of the document as a hex string', // required: false, // }, ] as const; type CreateTextDocToolParamsType = typeof createTextDocToolParams; const createTextDocToolInfo: ToolInfo = { name: 'createTextDoc', description: 'Creates a text document with the provided content and title. Use if the user wants to create a textbox or text document of some sort. Can use after a search or other tool to save information.', citationRules: 'No citation needed.', parameterRules: createTextDocToolParams, }; export class CreateTextDocTool extends BaseTool { private _addLinkedDoc: (doc: parsedDoc) => void; constructor(addLinkedDoc: (doc: parsedDoc) => void) { super(createTextDocToolInfo); this._addLinkedDoc = addLinkedDoc; } async execute(args: ParametersType): Promise { try { this._addLinkedDoc({ doc_type: 'text', data: args.text_content, title: args.title }); return [{ type: 'text', text: 'Created text document.' }]; } catch (error) { return [{ type: 'text', text: 'Error creating text document, ' + error }]; } } }