mirror of
https://github.com/simstudioai/sim.git
synced 2026-02-10 22:55:16 -05:00
* feat(tools): added download file tool for onedrive, google drive, and slack * added gmail & outlook move tools, added missing credentials descriptions to modal * added slack delete/update message, add reaction; added gmail read/unread/label/unarchive; added outlook copy/delete/read/unread * added threads to slack operations * added timestamp for slack webhook trigger since api uses timestamp for updating/reacting/deleting * cleanup * added file info to slack read messages * updated slack desc * fixed downloading for onedrive, slack, and drive * fix type check * fix build failure * cleanup files, fix triggers with attachments, fix integration blocks with include attachment to parse to user files, remove unused code * fix move files tools * fix tests * fix build errors * fix type error * fix tests * remove redundant code and filter out unecessary user file fields * fix lint error * remove fields from tag dropdown * fix file upload via API * fix pdf parse issue --------- Co-authored-by: waleed <waleed> Co-authored-by: Adam Gough <adamgough@Adams-MacBook-Pro.local> Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
86 lines
2.1 KiB
TypeScript
86 lines
2.1 KiB
TypeScript
import type { GmailLabelParams, GmailToolResponse } from '@/tools/gmail/types'
|
|
import type { ToolConfig } from '@/tools/types'
|
|
|
|
export const gmailRemoveLabelTool: ToolConfig<GmailLabelParams, GmailToolResponse> = {
|
|
id: 'gmail_remove_label',
|
|
name: 'Gmail Remove Label',
|
|
description: 'Remove label(s) from a Gmail message',
|
|
version: '1.0.0',
|
|
|
|
oauth: {
|
|
required: true,
|
|
provider: 'google-email',
|
|
additionalScopes: ['https://www.googleapis.com/auth/gmail.modify'],
|
|
},
|
|
|
|
params: {
|
|
accessToken: {
|
|
type: 'string',
|
|
required: true,
|
|
visibility: 'hidden',
|
|
description: 'Access token for Gmail API',
|
|
},
|
|
messageId: {
|
|
type: 'string',
|
|
required: true,
|
|
visibility: 'user-or-llm',
|
|
description: 'ID of the message to remove labels from',
|
|
},
|
|
labelIds: {
|
|
type: 'string',
|
|
required: true,
|
|
visibility: 'user-or-llm',
|
|
description: 'Comma-separated label IDs to remove (e.g., INBOX, Label_123)',
|
|
},
|
|
},
|
|
|
|
request: {
|
|
url: '/api/tools/gmail/remove-label',
|
|
method: 'POST',
|
|
headers: () => ({
|
|
'Content-Type': 'application/json',
|
|
}),
|
|
body: (params: GmailLabelParams) => ({
|
|
accessToken: params.accessToken,
|
|
messageId: params.messageId,
|
|
labelIds: params.labelIds,
|
|
}),
|
|
},
|
|
|
|
transformResponse: async (response) => {
|
|
const data = await response.json()
|
|
|
|
if (!data.success) {
|
|
return {
|
|
success: false,
|
|
output: {
|
|
content: data.error || 'Failed to remove label(s)',
|
|
metadata: {},
|
|
},
|
|
error: data.error,
|
|
}
|
|
}
|
|
|
|
return {
|
|
success: true,
|
|
output: {
|
|
content: data.output.content,
|
|
metadata: data.output.metadata,
|
|
},
|
|
}
|
|
},
|
|
|
|
outputs: {
|
|
content: { type: 'string', description: 'Success message' },
|
|
metadata: {
|
|
type: 'object',
|
|
description: 'Email metadata',
|
|
properties: {
|
|
id: { type: 'string', description: 'Gmail message ID' },
|
|
threadId: { type: 'string', description: 'Gmail thread ID' },
|
|
labelIds: { type: 'array', items: { type: 'string' }, description: 'Updated email labels' },
|
|
},
|
|
},
|
|
},
|
|
}
|