import axios, { AxiosRequestConfig, Method } from 'axios' import { Tool } from 'langchain/tools' import { ICommonObject } from '../../../src/Interface' export class MakeWebhookTool extends Tool { private url: string name: string description: string method: string headers: ICommonObject constructor(url: string, description: string, method = 'POST', headers: ICommonObject = {}) { super() this.url = url this.name = 'make_webhook' this.description = description ?? `useful for when you need to execute tasks on Make` this.method = method this.headers = headers } async _call(): Promise { try { const axiosConfig: AxiosRequestConfig = { method: this.method as Method, url: this.url, headers: { ...this.headers, 'Content-Type': 'application/json' } } const response = await axios(axiosConfig) return typeof response.data === 'object' ? JSON.stringify(response.data) : response.data } catch (error) { throw new Error(`HTTP error ${error}`) } } }