{"version":3,"file":"aws_lambda.cjs","names":["DynamicTool"],"sources":["../../src/tools/aws_lambda.ts"],"sourcesContent":["import { DynamicTool, DynamicToolInput } from \"@langchain/core/tools\";\n\n/**\n * Interface for the configuration of the AWS Lambda function.\n */\ninterface LambdaConfig {\n  functionName: string;\n  region?: string;\n  accessKeyId?: string;\n  secretAccessKey?: string;\n}\n\n/**\n * Interface for the arguments to the LambdaClient constructor.\n */\ninterface LambdaClientConstructorArgs {\n  region?: string;\n  credentials?: {\n    accessKeyId: string;\n    secretAccessKey: string;\n  };\n}\n\n/**\n * Class for invoking AWS Lambda functions within the LangChain framework.\n * Extends the DynamicTool class.\n */\nclass AWSLambda extends DynamicTool {\n  get lc_namespace(): string[] {\n    return [...super.lc_namespace, \"aws_lambda\"];\n  }\n\n  get lc_secrets(): { [key: string]: string } | undefined {\n    return {\n      accessKeyId: \"AWS_ACCESS_KEY_ID\",\n      secretAccessKey: \"AWS_SECRET_ACCESS_KEY\",\n    };\n  }\n\n  private lambdaConfig: LambdaConfig;\n\n  constructor({\n    name,\n    description,\n    ...rest\n  }: LambdaConfig & Omit<DynamicToolInput, \"func\">) {\n    super({\n      name,\n      description,\n      func: async (input: string) => this._func(input),\n    });\n\n    this.lambdaConfig = rest;\n  }\n\n  /** @ignore */\n  async _func(input: string): Promise<string> {\n    const { Client, Invoker } = await LambdaImports();\n\n    const clientConstructorArgs: LambdaClientConstructorArgs = {};\n\n    if (this.lambdaConfig.region) {\n      clientConstructorArgs.region = this.lambdaConfig.region;\n    }\n\n    if (this.lambdaConfig.accessKeyId && this.lambdaConfig.secretAccessKey) {\n      clientConstructorArgs.credentials = {\n        accessKeyId: this.lambdaConfig.accessKeyId,\n        secretAccessKey: this.lambdaConfig.secretAccessKey,\n      };\n    }\n\n    const lambdaClient = new Client(clientConstructorArgs);\n\n    return new Promise((resolve) => {\n      const payloadUint8Array = new TextEncoder().encode(JSON.stringify(input));\n\n      const command = new Invoker({\n        FunctionName: this.lambdaConfig.functionName,\n        InvocationType: \"RequestResponse\",\n        Payload: payloadUint8Array,\n      });\n\n      lambdaClient\n        .send(command)\n        .then((response) => {\n          const responseData = JSON.parse(\n            new TextDecoder().decode(response.Payload)\n          );\n\n          resolve(responseData.body ? responseData.body : \"request completed.\");\n        })\n        .catch((error: Error) => {\n          console.error(\"Error invoking Lambda function:\", error);\n          resolve(\"failed to complete request\");\n        });\n    });\n  }\n}\n\n/**\n * Helper function that imports the necessary AWS SDK modules for invoking\n * the Lambda function. Returns an object that includes the LambdaClient\n * and InvokeCommand classes from the AWS SDK.\n */\nasync function LambdaImports() {\n  try {\n    const { LambdaClient, InvokeCommand } =\n      await import(\"@aws-sdk/client-lambda\");\n\n    return {\n      Client: LambdaClient as typeof LambdaClient,\n      Invoker: InvokeCommand as typeof InvokeCommand,\n    };\n  } catch (e) {\n    console.error(e);\n    throw new Error(\n      \"Failed to load @aws-sdk/client-lambda'. Please install it eg. `pnpm install @aws-sdk/client-lambda`.\"\n    );\n  }\n}\n\nexport { AWSLambda };\n"],"mappings":";;;;;;;;;AA2BA,IAAM,YAAN,cAAwBA,sBAAAA,YAAY;CAClC,IAAI,eAAyB;AAC3B,SAAO,CAAC,GAAG,MAAM,cAAc,aAAa;;CAG9C,IAAI,aAAoD;AACtD,SAAO;GACL,aAAa;GACb,iBAAiB;GAClB;;CAGH;CAEA,YAAY,EACV,MACA,aACA,GAAG,QAC6C;AAChD,QAAM;GACJ;GACA;GACA,MAAM,OAAO,UAAkB,KAAK,MAAM,MAAM;GACjD,CAAC;AAEF,OAAK,eAAe;;;CAItB,MAAM,MAAM,OAAgC;EAC1C,MAAM,EAAE,QAAQ,YAAY,MAAM,eAAe;EAEjD,MAAM,wBAAqD,EAAE;AAE7D,MAAI,KAAK,aAAa,OACpB,uBAAsB,SAAS,KAAK,aAAa;AAGnD,MAAI,KAAK,aAAa,eAAe,KAAK,aAAa,gBACrD,uBAAsB,cAAc;GAClC,aAAa,KAAK,aAAa;GAC/B,iBAAiB,KAAK,aAAa;GACpC;EAGH,MAAM,eAAe,IAAI,OAAO,sBAAsB;AAEtD,SAAO,IAAI,SAAS,YAAY;GAC9B,MAAM,oBAAoB,IAAI,aAAa,CAAC,OAAO,KAAK,UAAU,MAAM,CAAC;GAEzE,MAAM,UAAU,IAAI,QAAQ;IAC1B,cAAc,KAAK,aAAa;IAChC,gBAAgB;IAChB,SAAS;IACV,CAAC;AAEF,gBACG,KAAK,QAAQ,CACb,MAAM,aAAa;IAClB,MAAM,eAAe,KAAK,MACxB,IAAI,aAAa,CAAC,OAAO,SAAS,QAAQ,CAC3C;AAED,YAAQ,aAAa,OAAO,aAAa,OAAO,qBAAqB;KACrE,CACD,OAAO,UAAiB;AACvB,YAAQ,MAAM,mCAAmC,MAAM;AACvD,YAAQ,6BAA6B;KACrC;IACJ;;;;;;;;AASN,eAAe,gBAAgB;AAC7B,KAAI;EACF,MAAM,EAAE,cAAc,kBACpB,MAAM,OAAO;AAEf,SAAO;GACL,QAAQ;GACR,SAAS;GACV;UACM,GAAG;AACV,UAAQ,MAAM,EAAE;AAChB,QAAM,IAAI,MACR,uGACD"}