aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/chatbot/tools/GetDocsTool.ts
diff options
context:
space:
mode:
authorbobzel <zzzman@gmail.com>2025-03-16 19:02:56 -0400
committerbobzel <zzzman@gmail.com>2025-03-16 19:02:56 -0400
commitdf708c90d8356934d2e3d9123129c761d328c1fe (patch)
tree98b0588710ac8ca00c303960da0851614aacf597 /src/client/views/nodes/chatbot/tools/GetDocsTool.ts
parent7d9fae09e8906e5636f6ea695ad560797b08d023 (diff)
parentf4042257be7359734a0dd35cedbf03fe4aa14cf1 (diff)
Merge branch 'DocCreatorMenu-work' of https://github.com/brown-dash/Dash-Web into DocCreatorMenu-work
Diffstat (limited to 'src/client/views/nodes/chatbot/tools/GetDocsTool.ts')
-rw-r--r--src/client/views/nodes/chatbot/tools/GetDocsTool.ts48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/client/views/nodes/chatbot/tools/GetDocsTool.ts b/src/client/views/nodes/chatbot/tools/GetDocsTool.ts
new file mode 100644
index 000000000..05482a66e
--- /dev/null
+++ b/src/client/views/nodes/chatbot/tools/GetDocsTool.ts
@@ -0,0 +1,48 @@
+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<GetDocsToolParamsType> = {
+ 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<GetDocsToolParamsType> {
+ private _docView: DocumentView;
+
+ constructor(docView: DocumentView) {
+ super(getDocsToolInfo);
+ this._docView = docView;
+ }
+
+ async execute(args: ParametersType<GetDocsToolParamsType>): Promise<Observation[]> {
+ const docs = args.document_ids.map(doc_id => DocCast(DocServer.GetCachedRefField(doc_id)));
+ 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}` }];
+ }
+}