From e6499abc10da5765859906db7e1371ee13986188 Mon Sep 17 00:00:00 2001 From: meenulekha-premakumar Date: Mon, 27 Oct 2025 18:04:28 +0100 Subject: [PATCH] feat(dust): switch to official SDK --- .../actions/add-fragment-to-conversation.ts | 44 ++++++--------- .../src/lib/actions/reply-to-conversation.ts | 54 ++++++++----------- .../pieces/community/dust/src/lib/common.ts | 21 ++++---- 3 files changed, 48 insertions(+), 71 deletions(-) diff --git a/packages/pieces/community/dust/src/lib/actions/add-fragment-to-conversation.ts b/packages/pieces/community/dust/src/lib/actions/add-fragment-to-conversation.ts index 084344dddd8..5a40beb0247 100644 --- a/packages/pieces/community/dust/src/lib/actions/add-fragment-to-conversation.ts +++ b/packages/pieces/community/dust/src/lib/actions/add-fragment-to-conversation.ts @@ -1,11 +1,6 @@ import { createAction, Property } from '@activepieces/pieces-framework'; import { dustAuth, DustAuthType } from '../..'; -import { DUST_BASE_URL } from '../common'; -import { - httpClient, - HttpMethod, - HttpRequest, -} from '@activepieces/pieces-common'; +import { createClient } from '../common'; import mime from 'mime-types'; export const addFragmentToConversation = createAction({ @@ -27,33 +22,26 @@ export const addFragmentToConversation = createAction({ }), }, async run({ auth, propsValue }) { + const client = createClient(auth as DustAuthType); + const mimeType = propsValue.fragmentName ? mime.lookup(propsValue.fragmentName) || mime.lookup(propsValue.fragment.filename) : mime.lookup(propsValue.fragment.filename); + const payload = { + content: propsValue.fragment.data.toString('utf-8'), + title: propsValue.fragmentName || propsValue.fragment.filename, + contentType: mimeType || 'text/plain', + context: null, + url: null, + }; - const dustAuth = auth as DustAuthType; + const response = await client.createContentFragment(payload); - const request: HttpRequest = { - method: HttpMethod.POST, - url: `${DUST_BASE_URL[dustAuth.region || 'us']}/${ - dustAuth.workspaceId - }/assistant/conversations/${propsValue.conversationId}/content_fragments`, - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${auth.apiKey}`, - }, - body: JSON.stringify( - { - content: propsValue.fragment.data.toString('utf-8'), - title: propsValue.fragmentName || propsValue.fragment.filename, - contentType: mimeType || 'text/plain', - context: null, - url: null, - }, - (key, value) => (typeof value === 'undefined' ? null : value) - ), - }; - return (await httpClient.sendRequest(request)).body; + if (response.isErr()) { + throw new Error(`API Error: ${response.error.message}`); + } + + return response.value; }, }); diff --git a/packages/pieces/community/dust/src/lib/actions/reply-to-conversation.ts b/packages/pieces/community/dust/src/lib/actions/reply-to-conversation.ts index 2edcdc1b768..faede0d5197 100644 --- a/packages/pieces/community/dust/src/lib/actions/reply-to-conversation.ts +++ b/packages/pieces/community/dust/src/lib/actions/reply-to-conversation.ts @@ -1,13 +1,8 @@ import { createAction, Property } from '@activepieces/pieces-framework'; -import { - httpClient, - HttpMethod, - HttpRequest, -} from '@activepieces/pieces-common'; import { dustAuth, DustAuthType } from '../..'; import { assistantProp, - DUST_BASE_URL, + createClient, getConversationContent, timeoutProp, timezoneProp, @@ -32,36 +27,33 @@ export const replyToConversation = createAction({ timeout: timeoutProp, }, async run({ auth, propsValue }) { - const dustAuth = auth as DustAuthType; - const request: HttpRequest = { - method: HttpMethod.POST, - url: `${DUST_BASE_URL[dustAuth.region || 'us']}/${ - dustAuth.workspaceId - }/assistant/conversations/${propsValue.conversationId}/messages`, - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${auth.apiKey}`, - }, - body: JSON.stringify( - { - content: propsValue.query, - mentions: [{ configurationId: propsValue.assistant }], - context: { - timezone: propsValue.timezone, - username: propsValue.username, - email: null, - fullName: null, - profilePictureUrl: null, - }, + const client = createClient(auth as DustAuthType); + + const payload = { + conversationId: propsValue.conversationId, + message: { + content: propsValue.query, + mentions: [{ configurationId: propsValue.assistant }], + context: { + timezone: propsValue.timezone, + username: propsValue.username, + email: null, + fullName: null, + profilePictureUrl: null, }, - (key, value) => (typeof value === 'undefined' ? null : value) - ), + }, }; - await httpClient.sendRequest(request); + + const response = await client.postUserMessage(payload); + + if (response.isErr()) { + throw new Error(`API Error: ${response.error.message}`); + } + return await getConversationContent( propsValue.conversationId, propsValue.timeout, - dustAuth + auth as DustAuthType ); }, }); diff --git a/packages/pieces/community/dust/src/lib/common.ts b/packages/pieces/community/dust/src/lib/common.ts index 9c27ddd940f..ac3be191ee8 100644 --- a/packages/pieces/community/dust/src/lib/common.ts +++ b/packages/pieces/community/dust/src/lib/common.ts @@ -1,8 +1,6 @@ import { Property } from '@activepieces/pieces-framework'; import { - httpClient, HttpMessageBody, - HttpMethod, } from '@activepieces/pieces-common'; import { DustAuthType } from '..'; import { DustAPI } from '@dust-tt/client'; @@ -80,16 +78,15 @@ export async function getConversationContent( auth: DustAuthType ) { const getConversation = async (conversationId: string) => { - return httpClient.sendRequest({ - method: HttpMethod.GET, - url: `${DUST_BASE_URL[auth.region || 'us']}/${ - auth.workspaceId - }/assistant/conversations/${conversationId}`, - headers: { - 'Content-Type': 'application/json', - Authorization: `Bearer ${auth.apiKey}`, - }, - }); + const client = createClient(auth as DustAuthType); + + const response = await client.getConversation({ conversationId: conversationId }); + + if (response.isErr()) { + throw new Error(`API Error: ${response.error.message}`); + } + + return response.value; }; let conversation = await getConversation(conversationId);