import { Observation } from '../types/types'; import { ParametersType, ToolInfo } from '../types/tool_types'; import { BaseTool } from './BaseTool'; import { DocServer } from '../../../../DocServer'; import { Docs } from '../../../../documents/Documents'; import { DocumentView } from '../../DocumentView'; import { OpenWhere } from '../../OpenWhere'; import { DocCast } from '../../../../../fields/Types'; const getDocsToolParams = [ { name: 'title', type: 'string', description: 'Title of the collection being created from retrieved documents', required: true, }, { name: 'document_ids', type: 'string[]', description: 'List of document IDs to retrieve', required: true, }, ] as const; type GetDocsToolParamsType = typeof getDocsToolParams; const getDocsToolInfo: ToolInfo = { name: 'retrieveDocs', description: 'Retrieves the contents of all Documents that the user is interacting with in Dash.', citationRules: 'No citation needed.', parameterRules: getDocsToolParams, }; export class GetDocsTool extends BaseTool { private _docView: DocumentView; constructor(docView: DocumentView) { super(getDocsToolInfo); this._docView = docView; } async execute(args: ParametersType): Promise { const docs = args.document_ids .map(doc_id => DocCast(DocServer.GetCachedRefField(doc_id))) .filter(d => d) .map(d => d!); const collection = Docs.Create.FreeformDocument(docs, { title: args.title }); this._docView._props.addDocTab(collection, OpenWhere.addRight); return [{ type: 'text', text: `Collection created in Dash called ${args.title}` }]; } }